【问题标题】:Android Google Maps API v2: Authorization failure at different laptopsAndroid Google Maps API v2:不同笔记本电脑的授权失败
【发布时间】:2013-02-06 12:55:42
【问题描述】:

我已经按照herehere 的步骤在我们与svn 同步的团队项目中创建了MapView。按照这些步骤操作后,MapView 运行流畅,但仅在我的笔记本电脑上运行。我的项目成员总是得到

02-06 13:27:37.327: E/Google Maps Android API(19490): Authorization failure.

打开MapView 时。因此,我删除了旧指纹,并使用我的 Google 帐户在另一台笔记本电脑上为新的 Google API 密钥生成了一个新的 SHA1 指纹:

keytool -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android -v

所以现在它正在我生成 SHA1 指纹的另一台笔记本电脑上工作,但是当我尝试在我的笔记本电脑上运行该项目时,我现在得到了

02-06 13:29:51.280: E/Google Maps Android API(20262): Authorization failure.

错误。

我们没有使用proguard-project.txt,我们尝试了安装google-play-services 并将/extras/google/google_play_services/libproject/google-play-services_lib 作为库包含的不同设备。我们还尝试生成多个 API 密钥,但只有一个有效。

我们做错了什么?我们是否必须使用不同的 Google 帐户来创建单独的密钥?

【问题讨论】:

  • 感谢您提出这个问题。它有助于为我自己的问题找到解决方案! :-)

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


【解决方案1】:

引用 Google API 控制台:

API 请求会从您客户的 Android 设备直接发送到 Google 设备。 Google 会验证每个请求是否来自 Android 与证书 SHA1 指纹之一匹配的应用程序和 下面列出的包名称。你可以发现 SHA1 指纹 您的开发者证书使用以下命令[...]

一个 SHA1 证书指纹和包名(用分号分隔) 每行。

在此处突出显示每行一个

`

对于您构建应用程序的每台笔记本电脑,您必须生成一个 SHA1 指纹并将其添加到 API 控制台中。

【讨论】:

    【解决方案2】:

    这里有两个选择。

    1. 为您拥有的每台设备的 api 密钥添加单独的一行。

    2. 将 api 密钥提取到文件(例如 map_key.xml)并从 AndroidManifest.xml 引用此文件。

      <meta-data
          android:name="com.google.android.maps.v2.API_KEY"
          android:value="@string/google_maps_api_key_v2" />
      

      将此文件添加到您的 .gitignore - 所以现在每个项目成员都可以使用自己的密钥覆盖。

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多