问题描述
我是 Android 新手,正在从事一个谷歌地图项目.为此,我使用 this 库在两点之间绘制路线.
I am new to Android and working on a google map project. For this I am using this library to draw a route between two points.
当对 google map api 键没有限制时,这可以正常工作.但是当限制应用于我的应用程序的包名称和 sha1 键时,它不会显示路由.
This works fine when there is no restriction on the google map api key. But when restriction is applied to my app's package name and sha1 key it won't show the route.
它抛出一个异常说:
此 IP、站点或移动应用程序无权使用此 API 密钥.从 IP 地址 XX.XX.XXX.XXX 收到请求,引用者为空
有什么方法可以通过受限的 api 密钥来使用这个库?如何使用此库添加引用者?
Is there any way to use this library with a restricted api key? How can I add a referrer with this library?
推荐答案
看起来这个库使用了 Directions API 网络服务,因此您不能使用受 Android 限制的 API 密钥.如果这样做,您将收到您报告的 request_denied 错误.这是因为 Web 服务是服务器端的,API 密钥只能受 IP 地址限制.
It looks like this library uses the Directions API web service, so you cannot use an Android-restricted API key. If you do, you get the request_denied error you're reporting. This is because web services are server-side and the API key can only be restricted by IP address.
话虽如此,您是从 Android 应用调用 API.Google 的文档 声明:
Having said that, you are calling the API from an Android app. Google's documentation states:
IP 限制可能不切实际,例如在移动应用程序中和依赖动态 IP 地址的云环境.使用时在这些场景中使用 Maps Web 服务 API,使用一个来保护您的应用或更多以下技术:
固定、代理服务器、混淆
pinning, proxy server, obfuscation
因此,设置代理服务器可能是正确保护 API 密钥的最佳方式.
Hence, setting up a proxy server may be the best way to properly secure your API key.
希望这可以澄清您的问题.
Hope this clarifies your question.
这篇关于如何使用具有受限 API 密钥的 Google-Directions-Android 库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!