Kam*_*mar 13 google-cloud-platform android-security google-play-console
在 Google Play 商店控制台中上传构建时出现错误。错误如下。
泄露的 GCP API 密钥 您的应用程序包含泄露的 Google Cloud Platform (GCP) API 密钥。
罪魁祸首代码如下。
Places.initialize(getApplicationContext(), BuildConfig.GOOGLE_API_KEY);
Run Code Online (Sandbox Code Playgroud)
根据文档,我正在从 BuildConfig 读取密钥并限制该密钥。但仍然是同样的问题。我该如何解决这个问题..
Mil*_*aji 21
我也面临同样的问题。我找不到任何合适的解决方案。经过大量搜索后我找到了解决方案。所以我针对这个问题给出了一个完整的指南。非常感谢Prasenjit Banerjee对我的帮助。
使用 API 密钥并避免Google Play 控制台中泄露的 GCP API 密钥安全问题的完整指南:
首先,您需要遵循API 安全最佳实践来添加限制并安全地使用 API 密钥。
然后按照设置 Android Studio 项目添加 API 密钥并在主程序local.properties中使用它们。AndroidManifest.xml
最后访问 API 密钥作为文件中的变量AndroidManifest.xml:
<application>
.
.
.
.
<activity>
.
.
.
.
</activity>
<meta-data
android:name = "keyValue"
android:value = "${KEY}"/>
</application>
Run Code Online (Sandbox Code Playgroud)
MainActivity.kt输入以下代码以从元数据中获取 KEY 值AndroidManifest.xml(从GeeksforGeeks中的本文中查找解决方案):
注意:不要使用类来获取这些 API 密钥,因为此类将这些属性公开为变量。BuildConfigclass MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//get the KEY value from the meta-data in AndroidManifest
val ai: ApplicationInfo = applicationContext.packageManager
.getApplicationInfo(applicationContext.packageName, PackageManager.GET_META_DATA)
val value = ai.metaData["keyValue"]
val key = value.toString()
//for testing only
Toast.makeText(applicationContext, key, Toast.LENGTH_LONG).show()
// use this key to initialize places sdk
Places.initialize(applicationContext, key)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10654 次 |
| 最近记录: |