当前位置: 首页 > 知识库问答 >
问题:

Google Maps Android API v2授权失败

段恩
2023-03-14

我的步骤:

>

  • 从debug.keystore获取SHA1代码
  • 在google API控制台中创建应用程序
  • 已启用google map api v2
  • 输入sha1;my.package.name
  • 获取API密钥
  • 已创建AndroidManifest文件:

        <permission
                android:name="my.package.name.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
    
        <uses-permission android:name="my.package.name.permission.MAPS_RECEIVE"/>
    
        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
    
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    
        <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    
        <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true">
    
            <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_HERE" />
    
            <activity android:name="MyActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
        </application>
    </manifest>
    

    已创建布局

    编译后我得到了崩溃:

      ERROR/AndroidRuntime(10182): FATAL EXCEPTION: main
                    java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
                    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
                    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
                    at android.app.Activity.onCreateView(Activity.java:4716)
                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
                    at android.app.Activity.setContentView(Activity.java:1881)
                    at com.example.gm2.MyActivity.onCreate(MyActivity.java:16)
                    at android.app.Activity.performCreate(Activity.java:5104)
                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
                    at android.app.ActivityThread.access$600(ActivityThread.java:141)
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
                    at android.os.Handler.dispatchMessage(Handler.java:99)
                    at android.os.Looper.loop(Looper.java:137)
                    at android.app.ActivityThread.main(ActivityThread.java:5039)
                    at java.lang.reflect.Method.invokeNative(Native Method)
                    at java.lang.reflect.Method.invoke(Method.java:511)
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
                    at dalvik.system.NativeStart.main(Native Method)
    

    之后,我将布局更改为:

    <?xml version="1.0" encoding="utf-8"?>
    
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:id="@+id/map"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent" />
    

    并将MyActivity更改为

      super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
    
        transaction.add(R.id.map, MapFragment.newInstance());           
        transaction.commit();
    

    结果,应用程序启动了,但我没有看到地图。

    控制台日志:

    ERROR/Google Maps Android API(10369): Authorization failure.
    
  • 共有1个答案

    费锋
    2023-03-14

    步骤:

    • 确保设备具有Google Play services APK
    • 安装Google Play Service Rev.2以上
    • 在https://code.google.com/apis/console/
    • 上创建项目
    • 要启用“Google Maps Android API v2”
    • 要在项目中注册SHA1(现在,您需要在API控制台编写SHA1;your.app.package.name),并获取API密钥
    • 将目录android_sdk_dir/extras/google/google_play_services/libproject/google-play-services_lib复制到项目的根目录
    • 将下一行添加到your_project/project.properties

    android.library.reference.1=google-play-services_lib

    • your_project/proguard-project.txt
    • 添加下一行

    .

    -keep class * extends java.util.ListResourceBundle {
    
       protected Object[][] getContents();
    
    }
    

    现在您已经准备好使用Google Map API V2 for Android创建自己的Google Map应用程序了。

    如果您使用min SDK=8创建应用程序,请使用android支持库v4+SupportMapFragment而不是MapFragment。

     类似资料:
    • 我试图通过Java Apachebeam MongoDbIO连接器连接到MongoDB,得到一个“未授权”错误。 同样的连接细节也适用于Python并能够检索数据。 “org.apache.beam.sdk.io.mongodbo.mongodbio$boundedmongodbsource.$closeresource(Mongodbio.java:407)位于org.apache.beam.s

    • 因此,我已经研究了许多关于这个问题的问题,但没有找到解决方案。 以下是我目前在尝试使用谷歌地图Android API时收到的错误。 这是我的清单文件 这是片段。地图的java 以及布局。相同的xml 下面的图片显示了启用的谷歌地图Android API 下面是显示生成的API密钥的

    • 授权失败。请参阅https://developers.google.com/maps/documentation/android/start了解如何正确设置地图。 确保以下内容与API控制台中的内容相对应:包名称:,API密钥:,证书指纹:联系Google服务器失败。建立连接后将进行另一次尝试。 加载地图失败。联系Google服务器时出错。这可能是身份验证问题(但可能是由于网络错误)。 我知道关于

    • 我创建了一个服务帐户,并为其分配了访问云功能的权限: gcloud beta函数add-iam-policy-binding MyFunction--member=serviceaccount:cf-access@my-project.iam.gserviceaccount.com--role=roles/cloudfunctions.admin 产出: 现在,我下载了服务帐户json文件。 所以

    • 结果:失败异常:ClientAuthenticationError:服务器无法对请求进行身份验证。确保包括签名在内的授权头的值是正确形成的。requestid:cdccbb2e-e01e-0007-6cfd-40c024000000时间:2020-06-12t21:09:22.1504720z错误代码:身份验证失败错误:无身份验证错误详细信息:在HTTP请求'n+okbbfhsn12nhw3siq

    • 我目前正在使用SHA1证书指纹,该证书来自发布证书,用于在AppStore上发布我的应用程序。 编辑:我还在API控制台上打开了Google Map Android API v2。 我从这里的注释中读到了“签名算法必须是SHA1withRSA而不是SHA256WITHRSA”。但是,我从Eclipse创建了发布证书,它是SHA256withRSA,我没有对它做任何设置。我似乎也改变不了。