谷歌地图v2:授权失败

bas*_*svk 33 android google-maps-android-api-2

授权失败.有关如何正确设置地图的信息,请参阅https://developers.google.com/maps/documentation/android/start.

确保以下内容与API控制台中的内容相对应:软件包名称:com.company.app,API密钥:AIzaSyC***OsTeo,证书指纹:4E5285***6BF53ED3 无法与Google服务器联系.建立连接时将进行另一次尝试.

无法加载地图.联系Google服务器时出错 这可能是一个身份验证问题(但可能是由于网络错误).


我知道关于这个问题还有更多的问题.但我似乎无法让地图视图起作用.结果是一个空的地图视图(带有缩放按钮).

我做了什么:
- 下载/安装了google-play-services
- 已添加google-play-services.jarlibs/
- Google Maps API v2在code.google.com/apis/console中启用
- 设置正确的权限

这就是我的清单的样子:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<permission
    android:name="com.company.app.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.company.app.permission.MAPS_RECEIVE" />

<application ...>
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyC***OsTeo" />
</application>
Run Code Online (Sandbox Code Playgroud)

Google API控制台api访问权限如下所示:

Key for Android apps (with certificates)
API key:        AIzaSyC***OsTeo
Android apps:   4E:52:85:***6B:F5:3E:D3;com.company.app
Activated on:   Jun 18, 2013 11:07 PM
Activated by:   my@email.com – you
Run Code Online (Sandbox Code Playgroud)

还有一些代码(我不知道为什么会导致授权错误):

FragmentManager fragmentManager = super.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SupportMapFragment fragment = new SupportMapFragment();
fragmentTransaction.replace(R.id.mapContainer, fragment);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我收到一条错误消息,指出包名称,API密钥和证书指纹与Google服务器不对应.但就像我上面写的那样,那些价值确实匹配......

Luk*_*rog 80

激活Google Maps Android API v2服务Google API's console.此外,进行更改后,在设备/模拟器上完全重新安装应用程序.

  • 需要注意的重要一点是确保在重建后在设备上干净地安装应用程序. (45认同)
  • 这是我第二次遇到这个问题,这也是我第二次感到困惑.如果您认为自己已经完成了所有工作......请记住重新安装应用程序! (7认同)
  • 非常感谢@Robot ...我花了好几个小时搞清楚这一点,从来没有想过解决方案会这么容易! (3认同)

Ief*_*gen 12

对我来说,这很简单:当您在Android Studio中工作时,您可以在文件google_maps_api.xml中编写Google API密钥,但Android Studio仅在Project Manager中显示(调试)版本的密钥文件.你需要把钥匙放进去

\程序\ SRC \释放\水库\值\ google_maps_api.xml

文件也是(就像你把钥匙放在里面一样

\程序\ SRC \调试\水库\值\ google_maps_api.xml

)


Chr*_*lay 8

设置API密钥时,软件包名称是package您的属性值manifest,而不是应用程序名称.

这(com.foo):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.foo"
Run Code Online (Sandbox Code Playgroud)

不是这个(com.foo.MyApplication):

<application
    android:name="com.foo.MyApplication"
Run Code Online (Sandbox Code Playgroud)


Sku*_*box 5

我有同样的问题,但激活了正确的 api。问题是我在获取 SHA1 时使用了错误的密钥库文件。我使用了发布密钥库,而我需要使用:

keytool -list -v -keystore debug.keystore
Run Code Online (Sandbox Code Playgroud)

在这个文件上(mac osX 位置):

~/.android/debug.keystore
Run Code Online (Sandbox Code Playgroud)

这给了我在 google 控制台中输入的另一个 sha1,现在它可以工作了。


小智 5

请确保在 google 开发者控制台/凭据/包名称中正确键入了您的包名称。它必须是您的应用程序顶级包名称,例如。com.company.appname 不是 com.company.appname.ui.activity.maps 。我按照https://developers.google.com/maps/documentation/android/start 的说明操作,但在嵌套包中创建了 Activity。谷歌网页输入了嵌套的包名,我遇到了这个错误。