【问题标题】:Google Maps Android not Authenticating谷歌地图 Android 未进行身份验证
【发布时间】:2016-01-28 18:33:25
【问题描述】:

我正在 Android Studio 上开发一个 Android 应用,并尝试创建一个 Google Maps Activity。

Android Studio 自动创建了 Activity 和 google_maps_api.xml 文件。然后,我在 Google Developers Console 上创建了 Google Maps Android Key 并将其复制到上述 xml 文件中。我也

当我运行应用程序时它显示以下错误:

01-28 13:16:21.279 5689-5863/com.comunity.dxmobile.tooltester E/b: Authentication failed on the server.
01-28 13:16:21.279 5689-5863/com.comunity.dxmobile.tooltester E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
01-28 13:16:21.284 5689-5863/com.comunity.dxmobile.tooltester E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)
                                                                                         Ensure that the "Google Maps Android API v2" is enabled.
                                                                                         Ensure that the following Android Key exists:
                                                                                            API Key: AIza****vlmk
                                                                                            Android Application (<cert_fingerprint>;<package_name>): 57:29:****:77:1A:71;com.comunity.dxmobile.tooltester

我尝试将以下行添加到 Manifest

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

还添加了元数据标签

        <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />

这是我的 gradle 文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId "com.comunity.dxmobile.tooltester"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:percent:23.0.1'
    compile 'com.google.android.gms:play-services-maps:8.4.0'
    compile 'com.google.android.gms:play-services:8.4.0'
}

这是 google_maps_aspi.xml 文件

<resources>
<!-- This was my generated key -->
    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">MY********KEY</string>
</resources>

我还检查了开发者控制台,并且 API 已启用。不是“Google Maps Android API v2”,而是“Google Maps Android API”。

【问题讨论】:

    标签: android google-maps android-studio


    【解决方案1】:

    确保您将以下内容添加到您的 AndroidManifest.xml,在 &lt;application&gt; 标记级别:

    <meta-data
                android:name="com.google.android.geo.API_KEY"
                android:value="@string/google_maps_key" />
    

    您还应该在新的资源文件 keys.xml 中包含从 Google Developer Console 生成的密钥,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">INSERT YOUR GENERATED KEY</string>
    </resources>
    

    【讨论】:

    • 嗨@MadaT,我用Manifest 部分和xml 文件更新了我的问题,并用你建议的代码,我忘了把它放在问题上,但我已经有了。
    【解决方案2】:

    您是否在清单中添加了与地图相关的元数据,如下所示

    <meta-data
          android:name="com.google.android.maps.v2.API_KEY"
          android:value="@string/testgoogleapikey" />
    

    【讨论】:

    • 嗨@Nidhin,我用你建议的代码用xml文件更新了我的问题,我忘了把它放在问题上,但我已经有了。
    • 嗨@an3sarmiento,好的,你是如何生成 sha1 哈希的密钥的。我的意思是,当您在 console.google.com 中创建地图应用程序时,您必须使用 SHA1 哈希键来获取地图的 api 凭据访问权限。您是否使用了默认密钥库来生成哈希,或者您为您的应用程序创建了一个新的密钥库。构建将密钥库链接到 google 的应用
    • 嗨@Nidhin,这是谷歌控制台的截图。查看 SHA1 哈希键,对应于错误消息中打印的那个 (i68.tinypic.com/25pmlj6.png)。为了回答您的问题,此哈希键是由 Activity 创建者自动生成的。
    • @an3sarmiento,您使用 gradle build 本身创建了 sha1 密钥?你问这个是因为你用于密钥库的密钥库和你用于构建你的 apk 的密钥库应该匹配
    【解决方案3】:

    在您的控制台日志中:异常说 确保启用了“Google Maps Android API v2”。

    请检查您的谷歌开发者帐户,您需要启用地图 API。

    使用您的帐户登录并检查 API 是启用还是禁用。 https://console.developers.google.com/apis/api/maps_android_backend/overview?project

    【讨论】:

    • 好的,如果你确定你已经做了正确的步骤。让我们再次仔细检查您的异常,授权失败,似乎您的应用程序使用错误的凭据连接到服务器。尝试卸载您的应用程序并再次运行。可能是您的凭据被兑现。
    • 嗨@Sundeep,这是谷歌控制台的截图。查看 SHA1 哈希键,对应于错误消息中打印的那个 (i68.tinypic.com/25pmlj6.png)。我尝试再次卸载并部署该应用程序,但错误消息仍然存在。
    【解决方案4】:

    我有同样的问题,去谷歌website找到“显示调试证书指纹”部分并按照说明操作,它会工作的!

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2021-09-25
      • 2012-09-20
      • 2020-08-15
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多