在Android中使用带有限制的Google API密钥



在创建Google Maps API密钥时,我们可以应用四个限制:-

  1. IP地址(web服务器、cron作业等(
  2. HTTP引用程序(Javascript(
  3. Andoid(用于SDK(
  4. ios(适用于SDK(

现在,如果我们使用它们各自位置的密钥,一切都会正常工作。

当我们想使用REST从移动设备(android/ios(访问一些API时,问题就来了,例如获取附近的位置以供用户输入。现在,在这种情况下,哪种限制会起作用?如何处理?

我已经尝试了所有的限制,但都不起作用。

提前谢谢。

您可以将密钥限制到Android应用程序,并在我的应用程序中进行http REST调用,方法是在https调用的标头中传递Android包名称和sha-1:

"X-Android-Package": "your.androidpackage.id"
"X-Android-Cert": "0000000000000000000000000000000000000000"

*请确保删除sha中的冒号":"。

您仍然需要将"key"作为url参数传递和公开,但如果标头中没有凭据,它将被阻止。

您希望从移动应用程序中使用Places API web服务。通常,谷歌地图API web服务应该从后端服务器调用,并且它们只支持IP地址限制。

我建议看一看下面关于可以为不同API设置限制的文章

https://developers.google.com/maps/faq#keysystem

正如您所看到的,Places API web服务只能使用IP地址限制。直接从移动设备发送Places API请求没有多大意义,因为每个设备都有自己的IP地址,而你不知道用户设备的IP地址。所以,为了保护API密钥,唯一可行的解决方法是创建中间后端服务器。

应用程序应向您的中间服务器发送请求,中间后端服务器应向Google发送Places API请求,受保护的API密钥仅限于您的服务器的IP地址,并将代理结果返回到您的应用程序。

在这种情况下,您需要两个API密钥。一个用于Google Maps Android SDK,带有Android应用程序限制,另一个用于Places API web服务,带有IP地址限制。

Android/Ios限制在这种情况下会起作用,将您的SHA放在那里所需的位置,然后在Android上放您的包名。它会起作用,还可以从控制台启用您正在使用的api。

相关内容

  • 没有找到相关文章

最新更新