【问题标题】:Google Maps Android API: Authorization failure. Ensure that the "Google Maps Android API v2" is enabled. Ensure that the following Android Key existsGoogle Maps Android API:授权失败。确保启用了“Google Maps Android API v2”。确保以下 Android Key 存在
【发布时间】:2019-10-10 11:36:27
【问题描述】:

我收到此错误:

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>):

我看到的不是地图正常工作,而是:

在我的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:我已经启用了 Maps SDK for Android:

错误提示:Ensure that the "Google Maps Android API v2" is enabled.。是否指的是我在此 UPDATE 1 的屏幕截图中显示的 Maps SDK for Android

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

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

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

更新 4: 请参阅我的解决方案 https://stackoverflow.com/a/56307654/4242086

【问题讨论】:

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


    【解决方案1】:

    嘿,我今天遇到了同样的问题!,我很容易解决,首先你必须去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。我已经启用了Maps SDK for Android
    • 您是否已将您的 api 密钥添加到您的 androidmanifest 中?如果是,请尝试取消选中 api 限制
    • 我创建了一个新的 API 密钥并将其添加到我的 AndroidManifest.xml。正如您在我的回答中看到的那样,它已经对我有用。谢谢。
    • 哦,太好了,我很高兴现在它可以工作了! (你能把我的答案标记为正确吗?需要那个徽章)
    • 我对您的回答投了赞成票,感谢您的帮助。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我按照本教程进行了操作,并且能够修复它: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

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

      applicationId "[my package name]"
      

      SHA-1 certificate fingerprint 我是通过运行signingReport从 Android Studio 中找到的:

      结果包括如下内容:

      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 应用中可以正常工作:

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

      【讨论】:

      • 更新 applicationId 是解决我问题的关键,非常感谢
      • 我选择 NONE 进行测试
      【解决方案4】:

      当我将项目移动到新计算机时,我得到了完全相同的症状。我的解决方案是根据错误消息生成一个新密钥。 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 文件,效果很好。

      【讨论】:

        【解决方案5】:

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

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

        2. 启用谷歌地图 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 证书指纹单击限制键。 从选择 API 下拉菜单中选择 Maps SDK for Android
        4. 要完成更改,请点击保存。

        【讨论】:

          【解决方案6】:

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

          在几乎一整年的闲置之后,我再次拿起了一个旧的爱好项目。我可能在某处更改了某些内容,从而触发了证书指纹的更改,反之亦然。

          希望这会有所帮助!

          【讨论】:

            【解决方案7】:

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

            改变

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

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

            【讨论】:

              猜你喜欢
              • 2012-11-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-25
              • 2012-11-21
              • 1970-01-01
              • 2013-03-24
              • 2023-04-02
              相关资源
              最近更新 更多