【问题标题】:Google Maps API V2 - always get authentication errorGoogle Maps API V2 - 总是出现身份验证错误
【发布时间】:2013-06-12 11:36:26
【问题描述】:

我发现了很多关于这个的问题 - 我几乎羞于自己问这个问题。

但无论我多么努力,我都只是简单地根本没有让 Maps API 运行

演示项目 com.example.mapdemo 中没有,我自己的项目中没有。

我确实注册了我的 debug.keystore SHA1 指纹,现在用于我的应用程序和 com.example - 我还尝试了浏览器 API 密钥,每个人都说这也可以工作。

但是没有。

我总是得到:

06-16 11:21:29.860: E/Google Maps Android API(2382): Authorization failure.  Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.

我对此感到非常非常生气。怎么可能不完整和彻底地描述这个问题,以便那些能够编写 Android 应用程序的人能够跟随并取得成功??

怎么做?

谁能告诉我还有什么问题?

附加组件:我完全按照规范设置了所有内容,从我的 debug.keystore 中获取了我的密钥,使用 com.example 进行了地图演示的尝试,并为我的应用程序使用了我自己的包。不工作。 另外:那个愚蠢的空窗。这到底是怎么回事... :-(

【问题讨论】:

  • 欧普斯。抱歉打错了... :-)
  • 我今天遇到了同样的问题。我的应用程序中没有显示工作地图,我很担心。我已经通过将我机器的当前 SHA 更改为开发人员站点的地图来解决这个问题,因为我的 SHA 发生了变化(可能是因为我更新了我的 Android Studio 并且 SHA 依赖于 debug.keystore,所以它发生了变化)并且我的问题得到了解决。
  • 您是否仍然收到您在问题中提到的错误,因为这个问题是很久以前提出的?

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


【解决方案1】:

假设

  • 您正在可以访问 Google Play 服务的设备上尝试此操作
  • 您已将您的项目与 Google Play 服务库链接
  • 您已设置必要的权限,如下所示:

来自清单的 sn-p:

<!-- Specify the correct minSDK and targetSDK versions. -->
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<!-- Google Maps related permissions -->
<permission
    android:name="com.ecs.google.maps.v2.actionbarsherlock.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />

<!-- Network connectivity permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- Access Google based webservices -->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<!-- External storage for caching. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- My Location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
  • 您已像这样设置地图键:

  • 您已将元数据标签放入应用标签

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyA_u1faIXRhx_Q7NafFbrhQJEerl6UUbPY" />
    
  • 您确保使用正确的密钥库(对应于 API 控制台中定义的密钥库)构建 APK。

  • 在检查/更新这些步骤后,您完全删除并重新部署了您的应用程序,您应该一切顺利。

根据我的经验,我能够按照 Google Maps Android API v2 Getting started 上的说明进行操作,但我确实记得在使用 API 密钥/权限后必须再次完全取消部署并重新部署应用程序。 p>

你在什么设备上运行?

【讨论】:

  • 是的,你所有的假设都是正确的。我在我的 HTC One 上试了一下。真的不知道谷歌想要什么以及应该如何工作。甚至地图演示应用程序都不起作用,我首先尝试了一些人正在谈论的“浏览器”键,然后我尝试了我自己的键。我从 debug.keystore 获取它,从 Eclipse 部署了应用程序。我把它完全删除了好几次。没有机会。它根本行不通。我想知道为什么谷歌会做这么奇怪的事情!该消息根本没有帮助。
  • 我已经为此奋斗了好几天,并且做了几次教程。为我解决的问题只是从我的手机中卸载该应用程序,然后再次安装。然后我脸上的表情...... :)
  • @trevor-e 我还注意到有时需要重新安装应用程序(如我的回答中所述)。就好像有时缓存了旧的或无效的 api 密钥,而应用程序的简单部署并没有刷新它。卸载并重新安装应用程序通常会有所帮助。
  • 我和 ddewaele 有同样的经历。一切都是正确的,但我必须先进入手机的应用程序管理器来删除现有的安装。
【解决方案2】:

我也有同样的问题,我知道我有点知道是什么导致了问题(虽然不是解决方案-但是-)

尝试在您的 HTC One 以外的其他手机上运行您的应用程序。因为我的 HTC One 有问题,但是当我在 S3 上运行它时,它运行良好。

请尝试告诉我

编辑

我解决了。但不确定确切的解决方案是什么,但我在这里做了以下步骤: 1-我在手机设置中显示了开发人员选项,使用 4.2 操作系统中的 7 次点击 2-允许的模拟位置 3-在“选择调试应用程序”中选择了我的应用程序 4-卸载我的应用程序 5-重新安装它 6- 运行它并等待 30 秒然后地图显示

希望对你有帮助

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,然后我发现我犯了一个简单的错误,请验证您是否在google api控制台的服务类别中打开了“Google Maps Android API v2”。我打开了错误的一个它从来没有为我工作过,但现在它工作了, 希望这可以帮助。 https://code.google.com/apis/console

    【讨论】:

      【解决方案4】:

      即使是我也面临同样的问题好几天了。我只是从设置中卸载了该应用程序,然后重新安装它并神奇地工作了。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。在检查了 ddewaele 回答的第 20 次步骤后,在 Google 的 API 控制台中打开 Maps V2 android 后,我重新启动了手机,等待了大约 15 秒的数据下载,一切都像魅力一样。卸载应用程序不足以使其正常工作。只需在边缘使用开发人员为其他地图留下信息。

        【讨论】:

          【解决方案6】:

          我有同样的问题,我花了两个星期才找到解决方案,最后我得到了它。 只需从 res/values/google_maps_api.c 中删除键并用新键替换它 按照以下步骤,您将获得一个新密钥。

          1> Find SHA1 by Using that command in command prompt:
          
          keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
          
          2> Get Package name from android manifest and use finger print of SHA1 for create an new api key 
          
          
          3> copy created key and past it in res/values/google_maps_api.xml and also past in android manifest 
          
          <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">Paste Here New Api</string>
          </resources>
          
          <meta-data
                      android:name="com.google.android.geo.API_KEY"
                      android:value="Paste Key Here" />
          

          【讨论】:

            【解决方案7】:

            我知道这是一个旧线程,但它是几个月前编辑的,我遇到了同样的问题。由于我的问题版本的原因有点不同,我将在此处添加。我检查了所有先前引用的条件是否为真,但它仍然给出相同的错误。

            经过几个小时的随机尝试后,我终于发现 Android Studio 的 xml 字符串翻译管理器创建了一个新字符串,该字符串具有与 google api 密钥相同的标识符(默认情况下存储在不同的 xml 文件中)其他字符串)。这个新的字符串资源确实是空的,并且与真正的键相冲突。删除即可解决问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-01-24
              • 1970-01-01
              • 2022-12-10
              • 1970-01-01
              相关资源
              最近更新 更多