34

授权失败。请参阅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.jar到-在 code.google.com/apis/console中libs/
启用Google Maps API v2
- 设置正确的权限

这就是我的清单的样子:

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

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

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

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

如您所见,我收到一条错误消息,指出包名称、api 密钥和证书指纹与谷歌服务器不对应。但就像我在上面写的那样,这些值确实匹配......

4

10 回答 10

84

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

于 2013-06-19T07:09:15.767 回答
15

对我来说,这很简单:当您使用 Android Studio 工作时,您将 Google API 密钥写入文件 google_maps_api.xml 但 Android Studio 仅在项目管理器中向您显示(调试)版本的密钥文件。你需要把你的钥匙放在

\app\src\release\res\values\google_maps_api.xml

文件(就像你把你的钥匙放在

\app\src\debug\res\values\google_maps_api.xml

)

于 2015-05-27T22:27:07.680 回答
9

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

这个(com.foo):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.foo"

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

<application
    android:name="com.foo.MyApplication"
于 2014-06-06T01:00:44.687 回答
5

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

keytool -list -v -keystore debug.keystore

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

~/.android/debug.keystore

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

于 2014-04-23T06:08:15.283 回答
5

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

于 2016-01-09T06:57:18.087 回答
4

确保以下事项:

https://code.google.com/apis/console/?noredirect
Click on Services(Left side panel) -> Enable Google Maps Android API v2

要获取您的 SHA1 密钥,您可以使用:以下命令 此命令将生成密钥库

keytool -genkey -v -keystore GoogleMapV2.keystore -alias GoogleMapV2 -keyalg RSA -    keysize 2048 -validity 10000

此命令提供 SHA1 密钥和其他信息

keytool -list -v -keystore ~/path/to/GoogleMapV2.keystore -alias GoogleMapV2 -storepass any-password -keypass any-password i.e :

68:1C:74:24:7B:1F:9C:71:76:DD:69:4F:F2:8F

: 你的钥匙在<application> </application>标签内

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="YOUR KEY" />
<meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

外部标签的权限<application> </application>,在顶部

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!--
     The following two permissions are not required to use
     Google Maps Android API v2, but are recommended.
    -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

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

注意:不要使用 Eclipse 或模拟器运行应用程序,通过创建不使用 eclipse 的 apk 运行到真实设备,否则会使用不正确的调试密钥。

VkJ

于 2014-04-19T13:37:38.473 回答
2

除了我的观察之外,我没有任何证据表明这一点,但看起来 API 密钥在设置后可能需要几分钟才能激活。

一点耐心似乎对我有用!

于 2014-08-10T20:16:21.557 回答
2

说清楚。如果在 android sdk 上调试您的应用程序时 Map 活动显示没有错误,但在您安装 apk 时它什么也不显示并给出此错误:

07-02 03:18:36.467 25914-26028/? E/Google Maps Android API:授权失败。请参阅 https://developers.google.com/maps/documentation/android-api/start了解如何正确设置地图。07-02 03:18:36.470 25914-26028/? E/Google Maps Android API:在 Google Developer Console ( https://console.developers.google.com ) 中确保启用了“Google Maps Android API v2”。确保以下 Android Key 存在: API Key: YOUR_KEY_HERE Android Application (;):

解决方案是:将您的密钥放在:\app\src\release\res\values\google_maps_api.xml

正如你在:\app\src\debug\res\values\google_maps_api.xml

正如这里提到的

于 2018-07-01T23:24:12.757 回答
1

当我在寻找解决方案后向他们提出票时,我从 Google Map 支持团队得到了这个答案:

  1. 生成发布密钥,您可以在此处找到详细信息Google Cloud Console
  2. 将您的应用上传到 Google Play(签名的 APK 文件)。
  3. 提交应用后,从 Google Play 管理中心选择您的应用。
  4. 转到开发工具 -> 发布管理 -> 应用签名。
  5. 上传应用后复制 Google Play 颁发的 SHA-1 证书。
  6. 转到 Google 控制台并选择您的项目。
  7. 选择您的 API 密钥,限制您的密钥,然后将 SHA-1 粘贴到包名称之后。
  8. 按保存。
于 2020-05-22T07:13:52.833 回答
1

如果您选择了快速路线来制作 API 密钥,请检查自动创建的包名称。我的 .functions 附加到包名上,这似乎是问题所在。 https://console.developers.google.com/apis/credentials/

于 2020-01-30T15:19:37.900 回答