谷歌地点API + ReactNative

4

我正在尝试在 Android 应用中使用 Google Places API,我使用的是 React Native 和以下软件包:https://github.com/FaridSafi/react-native-google-places-autocomplete

  1. 在 Google 控制台创建了 API 密钥
  2. 将限制设置为 Android 应用(SHA1 指纹 + 包名)
  3. 检查 SHA1 指纹和包名值:
    • 使用命令 aapt dump badging app-release.apk
    • 使用命令 unzip -p app-release.apk META-INF/CERT.RSA | keytool -printcert
  4. API 密钥没有任何 API 使用限制(可与任何服务一起使用)
  5. 启用了 Places API
  6. 启用了 Maps JavaScript API
  7. 启用了 Maps SDK for Android

A) 当 Android 应用程序限制已设置时(第 2 点),我会收到以下错误消息:

"google places autocomplete: This IP, site or mobile application is not authorized to use this API key. Request received from IP address xxx.xxx.xxx.xxx, with referrer: undefined"

B) 当移除 Android 应用程序限制(将限制设置为 None)时,一切都正常运行。

有任何想法吗?


你是在检查调试版还是发布版apk?你限制了哪个SHA1指纹,调试版还是发布版密钥? - Kranthi
我正在检查发布版本,指纹是针对发布版的。 - Hayk Sahakyan
你好,你找到这个问题的解决方案了吗?我已经在Android SDK上工作了地图功能,但是我希望使用同样的密钥获取地点信息。然而它一直报错。 - Vishnu
2个回答

2
Google Places API旨在用于服务器端应用程序。还有另外两个Places SDK适用于Android / IOS移动应用程序。API限制仅支持这些用法。因此,在React Native中使用Places API,您会感到有些无助。正确的方法是开发包装器模块,在您的React Native项目中使用适当的SDK。您可能想要查看https://github.com/tolu360/react-native-google-places

我尝试使用那个,但我只需要places的小版本,最好由https://github.com/FaridSafi/react-native-google-places-autocomplete提供。但我也遇到了相同的IP地址错误,需要找到解决方案。 - Vishnu
1
根据安装文档建议 - https://github.com/FaridSafi/react-native-google-places-autocomplete#installation,您需要使用“Google Places API Web Service”(而不是Android或iOS)。该API类型适用于服务器端应用程序,而不适用于手机应用程序。您需要将API密钥限制更改为IP地址。然而,这里存在严重的缺陷,现在您的API密钥有点像公共的,而且您不能限制您的API密钥,因为它应该需要被所有IP地址使用。 - e-j5

2
要使用这个React Native项目,你的Google Place API应该是无限制的。由于这不是一个Android SDK,也不是一个带有Javascript的网站,所以唯一的选择是取消限制。
更好的方法是限制Places API的API使用,以避免误用。
请参考下面的截图检查如何限制React Native自动完成的Google Places API。

How to restrict Google Places API for React Native Autocomplete


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接