如果密钥和 SHA1 在 Android 中正确,则 Google 映射 API 出现响应错误?

Getting response error for Google Maps API if key and SHA1 are correct in Android?

我正在使用 Google 地图 API v2。我已四重检查我的应用程序的 API 密钥和 SHA1 是否正确。我有一个下拉菜单,当单击其中一个项目时,地图会显示该项目的标记。我以前用过这个,它工作正常,但现在不行了。我删除了旧密钥并创建了新密钥,认为它可以解决问题,但事实并非如此。我调用此 url 以获得必要的响应:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=34.9782618,-120.1863181&radius=10000&query=walmart&key={MY_KEY}

但是当我点击一个按钮调用那个 url 时,返回的响应是这样的:

 {"error_message" : "This IP, site or mobile application is not authorized to use this API key.
       Request received from IP address {BLOCKED}, 
       with empty referer",   "html_attributions" : [],
       "results" : [],   "status" : "REQUEST_DENIED"}

如果 API 密钥和 SHA1 正确,则不可能。几个小时以来,我一直在努力找出问题所在,但我似乎终生都无法弄清楚。如果我将 API 的限制设置为 Android 应用程序,那么它应该可以识别提供的指纹并且工作正常。我已经在调试和发布中尝试了 运行。

注意:出于安全和隐私原因,IP 地址已在此处屏蔽。

对于 Google 地图,您现在可以简单地使用 Api Key。无需输入 sha 密钥。同样对于 Google Places api,我们首先使用 Brower key 但现在 Api key 也足以用于 Goggle Places api。

只需添加您的 api 密钥。我用我自己的 api 键检查了它,它工作正常。添加你的。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=34.9782618,-120.1863181&radius=10000&query=walmart&key=YOUR_API_KEY

注意:还有一件事不要直接在清单中写入 api 密钥。首先在string.xml中声明然后使用它。

例如

           <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_geo_api_key" />

在 Google API 控制台中,检查您使用的密钥是否仅限于 Android 应用程序。即使您是从 Android 应用程序进行调用,您也可以通过直接调用端点而不是使用 Android Places API 来访问 Places API,就好像您是浏览器一样。您需要为直接 http 调用创建一个单独的浏览器密钥,或者使用 Android API.