【问题标题】:How to use API keys to Authenticate Requests From an API如何使用 API 密钥验证来自 API 的请求
【发布时间】:2022-12-30 03:04:00
【问题描述】:

我正在尝试使用 Geocoding API 获取地址的纬度和经度。 那是我的代码:

JSONObject jsonObject = new JSONObject(response.body().toString());
                        Toast.makeText(TrackingOrder.this, jsonObject + " ", Toast.LENGTH_SHORT).show();
                        String lat = ((JSONArray) jsonObject.get("results"))
                                .getJSONObject(0)
                                .getJSONObject("geometry")
                                .getJSONObject("location")
                                .get("lat").toString();
                        String lng = ((JSONArray) jsonObject.get("results"))
                                .getJSONObject(0)
                                .getJSONObject("geometry")
                                .getJSONObject("location")
                                .get("lng").toString();

问题是我收到“拒绝访问”回复

 "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account",
       "results" : [],
       "status" : "REQUEST_DENIED"
    }

我生成一个 API 密钥,限制它,将它与我的 android 应用程序(名称,SHA)链接并启用地理编码 API 我尝试在浏览器上调用此请求相同的问题(相同的输出):

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

【问题讨论】:

  • 您的代码似乎缺少发出请求的代码,显然缺少所需的 API 密钥。您将需要一个 Google 项目并已启用 Maps API 并创建了一个 API(适当限制)。 API 密钥可以插入请求生成器以验证您的代码。看看谷歌的广泛documentation,其中解释了所有内容。
  • 谢谢@DazWilkin 我按照你说的做了但是出现了同样的问题我尝试这个 URL:https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY 但它在浏览器上给了我相同的输出:"error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account", "results" : [], "status" : "REQUEST_DENIED}
  • @DazWilkin 是否有可能因为这项服务不是免费的而无法使用?或者我可能必须将该帐户转换为结算帐户?
  • 是的,可能是这样。 Geocoding API 似乎没有提供免费套餐(尽管付费时可以免费使用)
  • 好的,就是这样,谢谢@DazWilkin

标签: java android api google-maps google-cloud-platform


【解决方案1】:

我在通过应用程序调用地理编码时遇到了同样的问题。所以想确保通过邮递员重复同样的事情。结果证实,我们需要确保遵循 Google API 强制限制的基本步骤。

还提供了使用当前密钥的额外安全性。如果您不想使用额外的当前密码,您可以将其禁用或删除。

错误报告

情况1 "error_message": "您必须使用 API 密钥来验证对 Google Maps Platform API 的每个请求。有关其他信息,请参阅http://g.co/dev/maps-no-account", “结果”: [], “状态”:“REQUEST_DENIED”

案例二 { "error_message": "具有引用限制的 API 密钥不能与此 API 一起使用。", “结果”: [], “状态”:“REQUEST_DENIED” }

取消对前往的限制 --> https://console.cloud.google.com/google/maps-apis 如以下选项。

申请限制

应用程序限制控制哪些网站、IP 地址或应用程序可以使用您的 API 密钥。

您可以为每个键设置一个应用程序限制。 1)无 2)HTTP referrers (web sites) --> //I choose this one for my case. 3)IP 地址(网络服务器、cron 作业等) 4)安卓应用 5)iOS 应用程序

网站限制 限制对指定网站的密钥使用请求。 例如:给出 https://:port/ 或 https://

如果留空,您的 API 密钥将接受来自任何网站的请求。

我希望这有帮助。 问候, RKD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 2021-12-03
    • 2021-10-04
    • 2011-05-16
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多