【问题标题】:Google maps v2: Authorization failure谷歌地图 v2:授权失败
【发布时间】:2013-06-19 06:55:36
【问题描述】:

授权失败。请参阅https://developers.google.com/maps/documentation/android/start了解如何正确设置地图。

确保以下内容与 API 控制台中的内容相对应:包名称:com.company.app,API 密钥:AIzaSyC***OsTeo,证书指纹:4E5285***6BF53ED3 无法联系 Google 服务器。建立连接后将进行另一次尝试。

加载地图失败。联系 Google 服务器时出错。这可能是身份验证问题(但可能是由于网络错误)。


我知道关于这个主题的问题已经够多了。 但我似乎无法让地图视图正常工作。结果是一个空的地图视图(带有缩放按钮)。

我做了什么:
- 下载/安装 google-play-services
- 将google-play-services.jar 添加到libs/
- 在 code.google.com/apis/console
中启用 Google Maps API v2 - 设置正确的权限

这是我的清单的样子:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<permission
    android:name="com.company.app.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.company.app.permission.MAPS_RECEIVE" />

<application ...>
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyC***OsTeo" />
</application>

Google API 控制台 api 访问如下所示:

Key for Android apps (with certificates)
API key:        AIzaSyC***OsTeo
Android apps:   4E:52:85:***6B:F5:3E:D3;com.company.app
Activated on:   Jun 18, 2013 11:07 PM
Activated by:   my@email.com – you

还有一些代码(我不明白为什么会导致授权错误):

FragmentManager fragmentManager = super.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SupportMapFragment fragment = new SupportMapFragment();
fragmentTransaction.replace(R.id.mapContainer, fragment);
fragmentTransaction.commit();

如您所见,我收到一条错误消息,指出包名、api 密钥和证书指纹与谷歌服务器不对应。但就像我在上面写的那样,这些值确实匹配......

【问题讨论】:

  • 你不应该激活Google Maps Android API v2吗?您可能希望从设备/模拟器中删除应用程序,清理项目并重新安装。
  • 您是否在 api 控制台中启用了 google maps for android 以及您是如何引用库项目的?
  • @Luksprog:该死,多么明显。仅启用 Google Maps API v2 而不是 Google Maps Android API v2。现在它完美地工作了。谢谢! (您能否粘贴您的评论作为答案,以便我接受?)

标签: android google-maps-android-api-2


【解决方案1】:

Google API's console 中激活Google Maps Android API v2 服务。此外,在进行更改后,请在设备/模拟器上完全重新安装应用程序。

【讨论】:

  • 需要注意的重要一点是确保在重建后在设备上进行应用的全新安装。
  • 非常感谢@Robot ...我花了好几个小时才弄清楚这一点,没想到解决方案会这么简单!
  • 非常感谢...遭受并认为自己的api密钥有问题..后来找到了你的..
  • 这是我第二次遇到这个问题,这也是我第二次感到困惑。当您认为您已完成所有操作时...记得重新安装应用程序!!!
  • 这是一个很好的观点,大多数在线教程都教如何生成密钥,但没有一个指定您还必须启用此服务(默认情况下禁用,没有任何通知)
【解决方案2】:

帮帮我,如果简单的话: 当您在 Android Studio 中工作时,您将 Google API 密钥写入文件 google_maps_api.xml 但 Android Studio 仅在项目管理器中向您显示(调试)版本的密钥文件。你需要把你的钥匙放在

\app\src\release\res\values\google_maps_api.xml

文件也是(就像你把钥匙放在里面

\app\src\debug\res\values\google_maps_api.xml

)

【讨论】:

  • 我花了很多时间弄清楚 google_maps_api.xml 只在调试文件夹中!
【解决方案3】:

当您设置 API 密钥时,包名称是您的 manifest 上的 package 属性的值,而不是应用程序名称。

这个(com.foo):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.foo"

不是这个 (com.foo.MyApplication):

<application
    android:name="com.foo.MyApplication"

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,但激活了正确的 api。问题是我在获取 SHA1 时使用了错误的密钥库文件。我使用了发布密钥库,而不是我需要使用:

    keytool -list -v -keystore debug.keystore
    

    在这个文件上(mac osX 位置):

    ~/.android/debug.keystore
    

    这给了我另一个我在 google 控制台中输入的 sha1,现在它可以工作了。

    【讨论】:

      【解决方案5】:

      请确保您的包名称在谷歌开发者控制台/凭据/包名称中输入正确。它必须是您的应用程序顶部包名称,例如。 com.company.appname 不是 com.company.appname.ui.activity.maps 。我按照https://developers.google.com/maps/documentation/android/start 的说明操作,但在嵌套包中创建了 Activity。 Google 网页输入了嵌套包名称,我遇到了这个错误。

      【讨论】:

        【解决方案6】:

        确保以下几点:

        https://code.google.com/apis/console/?noredirect
        Click on Services(Left side panel) -> Enable Google Maps Android API v2
        

        要获取您的 SHA1 密钥,您可以使用:以下命令 此命令将生成密钥库

        keytool -genkey -v -keystore GoogleMapV2.keystore -alias GoogleMapV2 -keyalg RSA -    keysize 2048 -validity 10000
        

        此命令给出 SHA1 密钥和其他信息

        keytool -list -v -keystore ~/path/to/GoogleMapV2.keystore -alias GoogleMapV2 -storepass any-password -keypass any-password i.e :
        
        68:1C:74:24:7B:1F:9C:71:76:DD:69:4F:F2:8F
        

        &lt;application&gt; &lt;/application&gt; 标签内的您的密钥

        <meta-data
                    android:name="com.google.android.maps.v2.API_KEY"
                    android:value="YOUR KEY" />
        <meta-data
                    android:name="com.google.android.gms.version"
                    android:value="@integer/google_play_services_version" />
        

        &lt;application&gt; &lt;/application&gt; 标记之外的权限,在顶部

        <uses-permission android:name="android.permission.INTERNET" />
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
            <!--
             The following two permissions are not required to use
             Google Maps Android API v2, but are recommended.
            -->
            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        
            <uses-feature
                android:glEsVersion="0x00020000"
                android:required="true" />
        

        注意: 不要使用 Eclipse 或模拟器运行 App,通过创建运行到真实设备中 不使用 eclipse 的 apk 会使用不正确的调试密钥。

        VkJ

        【讨论】:

          【解决方案7】:

          除了我的观察之外,我没有任何证据,但看起来 API 密钥在设置后可能需要几分钟才能激活。

          一点耐心似乎对我有用!

          【讨论】:

            【解决方案8】:

            说清楚。如果在 android sdk 上调试您的应用程序时地图活动显示没有错误,但在您安装 apk 时它什么也没显示并给出此错误:

            07-02 03:18:36.467 25914-26028/? E/Google Maps Android API:授权失败。请参见 https://developers.google.com/maps/documentation/android-api/start 为 如何正确设置地图。 07-02 03:18:36.470 25914-26028/? E/Google Maps Android API:在 Google Developer Console 中 (https://console.developers.google.com) 确保启用了“Google Maps Android API v2”。 确保存在以下 Android 密钥: API 密钥:YOUR_KEY_HERE Android 应用程序 (;):

            解决方案是: 将您的密钥放在:\app\src\release\res\values\google_maps_api.xml

            正如你在:\app\src\debug\res\values\google_maps_api.xml 中所做的那样

            如上所述here

            【讨论】:

              【解决方案9】:

              如果您选择了快速路线来制作 API 密钥,请检查自动创建的包名称。我的 .functions 附加到包名上,这似乎是问题所在。 https://console.developers.google.com/apis/credentials/

              【讨论】:

                【解决方案10】:

                在寻找解决方案后,当我向 Google 地图支持团队提出问题时,我得到了这个答案:

                1. 生成一个发布密钥,你可以在这里找到详细的操作方法Google Cloud Console
                2. 将您的应用上传到 Google Play(签名的 APK 文件)。
                3. 提交应用后,从 Google Play 管理中心选择您的应用。
                4. 转到开发工具 -> 发布管理 -> 应用签名。
                5. 上传应用后复制 Google Play 颁发的 SHA-1 证书。
                6. 转到 Google 控制台并选择您的项目。
                7. 选择您的 API 密钥,限制您的密钥,然后将 SHA-1 粘贴到包名称之后。
                8. 按保存。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-05-11
                  • 2018-06-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多