Google Maps Android API:授权失败。确保已启用“ Google Maps Android API v2”。确保以下Android密钥存在

时间:2019-05-23 21:06:52

标签: google-maps google-maps-api-3 google-play-services google-maps-android-api-2 google-maps-android-api-1

我收到此错误:

E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
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: [The key...]
    Android Application (<cert_fingerprint>;<package_name>):

这不是我的地图正常工作,而是这样:

enter image description here

在我的app/build.gradle中,我有这个:

implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.8'
implementation 'com.google.android.gms:play-services-awareness:16.0.0'
implementation 'com.google.android.gms:play-services-cast:16.2.0'
implementation 'com.google.android.gms:play-services-gcm:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'

play-services-location是我需要的Google地图,对吗?我正在查看https://developers.google.com/android/guides/setup上的列表,并假设Google Location and Activity Recognition - com.google.android.gms:play-services-location:16.0.0是Google Maps所需要的。这是正确的吗?

更新1:我已经启用了Android版Maps SDK:

enter image description here

错误提示:Ensure that the "Google Maps Android API v2" is enabled.。是指我在 UPDATE 1 的屏幕快照中显示的Maps SDK for Android吗?

更新2:我已启用Maps SDK for Android

enter image description here

当我单击MANAGE按钮时,可以转到此部分以配置在 UPDATE 1 中显示的凭据。

更新3:我在模拟器上看到所有版本的Android上正确显示的地图。但是在物理设备上,地图永远不会显示。在实体手机上运行该应用程序时,我看到了Google徽标和红色气球,但现在看到了地图。只有在仿真器上,一切正常。有什么想法吗?

更新4:https://stackoverflow.com/a/56307654/4242086上查看我的解决方案。

7 个答案:

答案 0 :(得分:3)

嘿,我今天遇到了同样的问题!,我非常容易地解决了问题,首先您必须去https://console.developers.google.com并启用android SDK映射,然后创建api密钥,然后在xamarin中返回您的清单并添加谷歌地图api键

https://docs.microsoft.com/it-it/xamarin/android/platform/maps-and-location/maps/obtaining-a-google-maps-api-key?tabs=windows

这是文档 (我输入的速度很快,因为现在在移动设备上很抱歉)

答案 1 :(得分:1)

按照下面的链接生成Google api密钥:-  https://developers.google.com/maps/documentation/android-sdk/map-with-marker

Android代码参考链接:-

https://www.zoftino.com/android-mapview-tutorial

答案 2 :(得分:0)

我遵循了本教程,并且能够对其进行修复:https://www.youtube.com/watch?v=sJBlQv6IptQ。该视频引用了本教程:http://ramsandroid4all.blogspot.com/2016/01/google-maps-android-example-in-android.html

就我而言,我所做的是在https://console.developers.google.com/创建一个新项目。我将Android apps用于Application restrictions

enter image description here

对于Restrict usage to your Android apps部分,我必须提供一个Package name和一个SHA-1 certificate fingerprintPackage name在我的app/build.gradle中,具体在这里:

applicationId "[my package name]"

我通过运行SHA-1 certificate fingerprint在Android Studio中找到了signingReport

enter image description here

结果包括以下内容:

Alias: AndroidDebugKey
MD5: [The value]
SHA1: [The value]
SHA-256: [The value]
Valid until: Wednesday, May 5, 2049
----------

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
16:31:44: Task execution finished 'signingReport'.

现在,地图可以在我的Android应用中正常工作了

enter image description here

更新1:令我惊讶的是,这些地图只能在Android Studio仿真器上正常工作,而不能在真正的Android物理设备上正常工作。解决方案就是我在https://stackoverflow.com/a/56307654/4242086上发布的。

答案 3 :(得分:0)

将项目移至新计算机时,我得到的症状完全相同。我的解决方案是根据错误消息生成一个新密钥。 google_maps_api.xml文件在注释中有一个URL以生成密钥,但这是静态的,因此在将项目移至新计算机后,我重新编写了URL以匹配错误消息的版本。

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=[put-the-thing-here]

生成了密钥,并将其放入XML文件中,并且效果很好。

答案 4 :(得分:0)

对于那些还没有弄清楚的人,请再次查看错误消息下方的日志记录。请密切注意在日志记录中打印出的 certifcate_fingerprint package_name 。仔细比较这些内容与Google开发控制台中指定的内容。

在将近整整一年的不活动之后,我再次选择了一个旧的业余爱好项目。我可能在某处进行了更改,从而触发了证书指纹的更改,反之亦然。

希望这会有所帮助!

答案 5 :(得分:0)

时间改变了配置步骤。这是新的。

  1. 设置您的项目 https://console.cloud.google.com/projectselector2/home/dashboard

  2. 启用 Google 地图 API。转到 https://console.cloud.google.com/apis/library?filter=category:maps&_ga=2.192684329.2027491681.1618180744-3962552.1609436892 选择您要启用的 API

  3. 转到您项目的 API 凭据 https://console.cloud.google.com/project/_/apiui/credential

  4. 在凭据页面上,单击创建凭据 > API 密钥。 API 密钥创建对话框显示您新创建的 API 密钥

  5. 点击关闭。

  6. 在 Android Studio 中,打开您的应用级 build.gradle 文件并将以下代码添加到 plugins 元素。 id 'com.google.secrets_gradle_plugin' version '0.5'

  7. 保存文件并将您的项目与 Gradle 同步

  8. 打开 values\google_maps_api.xml 并将 YOUR_API_KEY 替换为第 4 点中的 API。

  9. 检查您的 AndroidManifest.xml,MAPS_API_KEY 已替换为您的实际密钥

    android:name="com.google.android.geo.API_KEY"
    android:value="${MAPS_API_KEY}" />
  1. 插入您的 AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
  1. 转到 API 和服务 > 凭据页面 https://console.cloud.google.com/project/_/apiui/credential
  2. 选择要对其设置限制的 API 密钥。出现 API 密钥属性页
  3. 在密钥限制下 --> 选择 Android 应用。 单击 + 添加包名称和指纹。 输入您的包名称和 SHA-1 证书指纹单击限制密钥。 从 Select APIs 下拉菜单中选择 Maps SDK for Android
  4. 要完成更改,请点击保存。

答案 6 :(得分:0)

就我而言,我做的一切都是正确的。但仍然出现错误,结果是更改清单文件中的属性“android:name”解决了问题。

改变

android:name="com.google.android.maps.API_KEY"

android:name="com.google.android.maps.v2.API_KEY"