Google 播放有关 Google 云平台 (GCP) API 密钥的安全警报

Google Play Security alert about Google Cloud Platform (GCP) API keys

我们在多个平台(Android、iOS、Web)上使用 GCP API 密钥进行 Google 地图、位置搜索 (api/place/autocomplete)、 static Google 地图等 现在我想为 Android 应用程序创建一个 new/separate 密钥,这样我就可以添加适当的限制,例如包名称 SHA1 并使用 APIs.

我创建了一个新密钥,在该地图工作正常后将其更改为应用程序,但位置搜索 API 一直抛出异常- This IP, site or mobile application is not authorized to use this API key. Request received from IP address <ip>, with empty referer",

有人遇到过这个问题吗?或者我应该如何调试它的任何线索?

您不能使用 Android 或 iOS 受限的 API 密钥发出 Web 服务请求。 Web 服务是服务器端的,只能使用受 IP 地址限制的 API 密钥。

您的每个 API 密钥都应根据使用中的 API 进行适当限制。

对于 web services,使用 IP 限制的 API 密钥。
对于 client-side services,使用 HTTP 引用限制 API 密钥。
对于 Android or iOS 的地图和地点 SDK,请使用 Android/iOS 受限 API 密钥。

要详细了解 API 地图 API 的 API 关键限制,请查看这些资源: https://developers.google.com/maps/faq#keysystem
https://developers.google.com/maps/api-key-best-practices#restrict_apikey

希望这能澄清您的问题!

我有同样的问题,我正在使用 Android RN 应用程序,但这对任何移动应用程序(Native 或 React native)都有帮助,你遇到的问题是硬编码你的 API KEY(这种情况google 将 API 放入您的源代码中),为了避免它,您应该将其删除并将其添加为 System/environment 变量,具体取决于您使用的 OS OS MAC 或 Windows,或者您 CI/ CD,如果您通过它交付您的应用程序。我通过以下步骤解决了问题:

  • 我必须在本地设置我的系统环境变量 在我的例子中我使用的是 MacOS,打开终端和 运行

    导出 GOOGLE_PLACES_ANDROID_API_KEY=Insert_API_KEY_here

  • (可选但这样更好)或将其复制到 ~/.bash_profile

  • 确保我的 system/environment 变量在那里 - 在 terminal "printenv" - 这将列出那些并且应该有你的 api键

    GOOGLE_PLACES_ANDROID_API_KEY

  • 在下面一行添加android/gradle.properties

# GOOGLE PLACES (we will replace this value DON'T COPY YOUR API KEY HERE)
GOOGLE_PLACES_ANDROID_API_KEY=HiHackerNoMyKey
  • 在 defaultConfig
  • 中的 app/build.gradle 添加以下行
defaultConfig {
  buildConfigField("String", "GOOGLE_PLACES_ANDROID_API_KEY", "\"${GOOGLE_PLACES_ANDROID_API_KEY}\"")
}

在我的例子中,我将 Appcenter 用作 CI,所以如果我们在 CI 中构建,我添加了这一行并且我的 CI 应该有我的 APIKEY在我的 system/environment 变量中已经设置

[buildConfigField("String", "GOOGLE_PLACES_ANDROID_API_KEY", "\"${System.env.GOOGLE_PLACES_ANDROID_API_KEY}\"")](url)

您可以使用 java

来调用它

Log.i(TAG, BuildConfig.GOOGLE_PLACES_ANDROID_API_KEY);

更多参考 https://developer.android.com/studio/build/gradle-tips#simplify-app-development

希望对您有所帮助!!