Google Maps API V2 - 始终会出现身份验证错误

时间:2013-06-16 09:35:41

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

我发现了很多关于此事的问题 - 我自己也很惭愧。

但无论我怎么努力,我都很简单根本没有运行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尝试了地图演示,使用我自己的应用程序包。不行。 加:那个愚蠢的空窗。这究竟是怎么回事......: - (

7 个答案:

答案 0 :(得分:6)

假设

  • 您正在可以访问Google Play服务的设备上尝试此操作
  • 您已将项目与Google Play服务库相关联
  • 您已设置如下所需的权限:
来自manifest的

片段:

<!-- 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" />
  • 您已经设置了这样的地图密钥:

enter image description here

  • 您已将元数据标记置于应用程序标记

    <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​​密钥/权限后,必须再次完全取消部署并重新部署应用

你在运行什么设备?

答案 1 :(得分:2)

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

尝试运行除HTC One之外的其他手机应用。因为我的HTC One存在问题,但是当我在S3上运行它时,它运行得很好。

请尝试告诉我

修改

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

希望这有帮助

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我有同样的问题,我花了两个星期才得到一个解决方案,我得到了它。     只需从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" />

答案 6 :(得分:0)

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

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