【问题标题】:Google places autocomplete api - REQUEST_DENIEDGoogle Places 自动完成 api - REQUEST_DENIED
【发布时间】:2011-12-03 18:53:08
【问题描述】:
【问题讨论】:
标签:
android
google-api
google-places-api
【解决方案1】:
您应该能够通过首先转到 API 控制台来查看您的 API 密钥:
https://code.google.com/apis/console
如果您还没有,您需要创建一个新的“项目”,然后首先使用开/关开关启用预测服务。
请发布您的结果,我在获得 REQUEST_DENIED 响应时遇到了类似的问题,但我已经获得了 API 密钥,并且我正在使用传感器参数,就像他们的文档状态一样。
令人沮丧的是,Google 没有提供任何类型的响应代码以及 REQUEST_DENIED,因此您可以了解它拒绝它的原因。如果在没有提供任何详细信息的情况下随机出现,这将很难在生产环境中提供支持和故障排除。
更新:
我现在才发现这对我有用,但只有在将我的请求更改为 GET 请求而不是 POST 之后。由于未知原因,Google 会为 POST 请求返回 REQUEST_DENIED,但允许通过 GET 进行相同的请求。一个快速测试,看看这是否是您的问题,将 URL 与您的 API 密钥和其他参数放在一起,然后通过您的浏览器进行尝试。如果可行,那么只需重写您的 Android 代码以使用 GET 而不是 POST,您应该已经准备就绪。
【解决方案2】:
我在交换 API 密钥时解决了这个问题。我使用的是 Android 设备下的那个,我将其更改为“浏览器应用程序的密钥(带引用者)”,尽管我使用的是 Android 设备,但它对我有用。
【解决方案3】:
我建议使用 .getJson() 来获取错误消息以及您的响应以了解究竟是什么错误。
对于我的 Flutter 案例:我使用了 googlePlace!.autocomplete.getJson(value);
我得到了以下回复。
{ "error_message" : "You must enable Billing on the Google Cloud Project at https://console.cloud.google.com/project/_/billing/enable Learn more at https://developers.google.com/maps/gmp-get-started", "predictions" : [], "status" : "REQUEST_DENIED" }
【解决方案4】:
这是错误的 API 密钥。按照步骤here 获得正确的。
【解决方案5】:
确保您的 API 密钥生成正确并且您已启用必要的 APIS。
就我而言,在设计 iOS 应用程序时 - 我需要启用适用于 iOS 的 Google Maps SDK、适用于 iOS 的 Google Places API
最重要的是,并且没有被 Google 提及(在任何其他地方也是如此)启用 Google Places API 网络服务。
至此,我结束了为期 2 天的针对我讨厌的问题的搜索。
当然,请确保您使用服务器应用程序的密钥