我正在创建一个应用程序,使用自动完成的地方谷歌api
我不知道是怎么回事,但我总是得到这样的回复:
{
"predictions" : [],
"status" : "REQUEST_DENIED"
}
我发送请求:https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Paris&types=geocode&language=fr&sensor=true&key=mykey
文档说明:
REQUEST_DENIED
表示您的请求被拒绝,通常是因为缺少传感器参数。
我有传感器参数,可能是api密钥。
是否有任何页面,我可以得到谷歌的日志:),看看为什么我得到REQUEST_DENIED
?
我使用api key from:
http://code.google.com/intl/pl-PL/android/maps-api-signup.html也许我必须从其他地方获得api密钥
您应该能够通过首先进入API控制台查看您的API密钥:https://code.google.com/apis/console
如果您还没有,您将需要创建一个新的"项目",然后通过使用On/Off开关首先启用预测服务。
请张贴你的结果,我有一个类似的问题,获得REQUEST_DENIED响应,但我已经得到了API密钥,我正在使用传感器参数,如他们的文档状态。
令人沮丧的是,谷歌没有给出任何类型的响应代码以及REQUEST_DENIED,所以你可以看到为什么它拒绝它。如果在没有提供任何详细原因的情况下随机退出,将很难在生产环境中支持和排除故障。
更新:我刚刚发现这对我来说是有效的,但只有在我的请求更改为GET请求而不是POST之后。由于未知的原因,Google对POST请求返回REQUEST_DENIED,但允许通过GET进行相同的请求。您可以通过一个快速测试来确定这是否是您的问题,将URL与您的API密钥和其他参数放在一起,然后通过浏览器尝试。如果这是可行的,那么只需重写你的Android代码使用GET而不是POST,你应该都设置好了。
当我交换API密钥时,它为我解决了。我使用的是Android设备下的一个,我把它改成了一个"Key for browser apps (with referers)",虽然我使用的是Android设备,但它对我来说是有效的。
我建议使用. getjson()来获取错误消息以及您的响应,以了解究竟是什么错了。
对于我的情况在扑动:我使用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" }
这是错误的API密钥。按照下面的步骤选择正确的样式。
确保正确生成了API密钥,并且启用了必要的API。以我为例,在设计iOS应用程序时,我需要启用iOS的Google Maps SDK, iOS的Google Places API
最重要的是,没有被Google提及(在任何其他地方)启用Google Places API Web Service。
这样,我结束了2天的搜索我的讨厌的问题。
当然,确保在服务器应用程序中使用Key