此 IP、站点或移动应用程序无权使用此 API 密钥 - Android 应用程序

Posted

技术标签:

【中文标题】此 IP、站点或移动应用程序无权使用此 API 密钥 - Android 应用程序【英文标题】:This IP, site or mobile application is not authorized to use this API key - Android App 【发布时间】:2016-04-03 16:19:44 【问题描述】:

我正在尝试将我的 android API 密钥(用于 Google Maps Direction API)的使用限制为使用我的 SHA-1 指纹签名的 Android 应用程序。当我不在 Google Developers Console 上的凭据下“添加包名称和指纹” 时,该密钥将完全正常工作。但是当我添加它们时,会出现此错误:

W/System.err:com.google.maps.errors.RequestDeniedException:此 IP、站点或移动应用程序无权使用此 API 密钥。从 IP 地址 XX.XX.XXX.XXX 收到请求,引用者为空

为解决此错误而给出的大多数答案都是针对 Places API 并通过切换到服务器 API 密钥来解决的。我需要使用 Android 密钥并希望限制该密钥的用户。

我注意到的几点:

    Google 确实识别出我正在使用有效的 API 密钥。 Google 确实识别出正确的 SHA-1 签名,如果我使用无效的 API 密钥,Google 将显示签名错误。

任何帮助将不胜感激!

【问题讨论】:

This IP, site or mobile application is not authorized to use this API key的可能重复 【参考方案1】:

如您所见,任何 API 密钥只要不受保护就可以在此处使用,但受保护的 Android API 密钥不适用于 Google Maps Directions API。

很简单,您需要为 Directions API(或任何网络服务 API)使用服务器 API 密钥。

来自the documentation::

Google Maps Directions API 只能使用服务器密钥。

原因是这些网络服务 API 最初旨在用于网站,而不是 Android 应用程序。

此外,保护服务器密钥的唯一方法是使用 IP 地址,因此无法在客户端执行此操作。

Google 的官方建议是使用应用程序向其发出请求的代理服务器,并从代理服务器发出 Directions API 请求。

参见此处(这是特定于 Places 网络服务 API,但对任何网络服务 API 都有效):https://groups.google.com/forum/#!topic/google-places-api/SmujrL-pDpU

来自 Google 员工的回复:

阿列克谢,

任何存储在客户端的东西都是可以妥协的,即使是混淆, 你只是让专门的黑客稍微慢了一点 访问。

我建议您设置应用程序以发送您的地点 向代理服务器请求没有 API 密钥以接收请求, 将 API Key 附加到请求的末尾,发送请求,然后 然后接收请求的响应并将其返回给您的 应用。

干杯,

克里斯

【讨论】:

感谢您的回答。尽管我仍然很难相信 Google 不会让您使用更安全的 API 密钥而不是没有安全性的密钥。

以上是关于此 IP、站点或移动应用程序无权使用此 API 密钥 - Android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

此 IP、站点或移动应用程序无权使用此 API 密钥 - Android 应用程序

此 IP、站点或移动应用程序无权使用此 API 密钥。从 IP 地址 **** 收到的请求,引用者为空

此站点或 IP 无权使用此 API 密钥

未经授权,此IP,站点或移动应用程序无法使用此API密钥

邮递员:“您无权查看此目录或页面”使用承载令牌

Google Maps API 错误:此 API 密钥无权使用此服务或 API。地方 API 错误:ApiTargetBlockedMapError