当前位置:  开发笔记 > 编程语言 > 正文

此IP,站点或移动应用程序无权使用此API密钥.

如何解决《此IP,站点或移动应用程序无权使用此API密钥.》经验,为你挑选了1个好方法。

我试图将我的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,并通过切换到Server API密钥来解决它.我需要使用Android密钥并希望限制该密钥的用户.

我注意到的要点:1)Google确实认识到我使用的是有效的API密钥.2)Google确实识别出正确的SHA-1签名,如果我使用无效的API密钥,Google会显示签名错误.

任何帮助将非常感激!



1> Daniel Nugen..:

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

很简单,您需要为Directions API(或任何Web服务API)使用Server API密钥.

从文档中:

Google Maps Directions API仅适用于服务器密钥.

原因是这些Web服务API最初打算用于网站,而不是Android应用程序.

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

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

请参阅此处(这是Places webservice API特有的,但它适用于任何Web服务API):https://groups.google.com/forum/#!topic / google-places-api/ SmujrL-pDpU

Google员工的回复:

阿列克谢,

存储客户端的任何东西都是可妥协的,即使是混淆,你只会让专用黑客访问它的速度慢一些.

我建议您将应用程序设置为将没有API密钥的Places请求发送到代理服务器以接收请求,将API密钥附加到请求的末尾,发送请求,然后接收并返回来自请求您的申请.

干杯,

克里斯


谢谢您的回答.虽然我仍然觉得很难相信Google不会让你使用更安全的API密钥而不是没有安全性的密钥.
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有