未为调试版本生成 Firebase 消息令牌
Posted
技术标签:
【中文标题】未为调试版本生成 Firebase 消息令牌【英文标题】:Firebase Messaging token not generated for Debug build 【发布时间】:2022-01-06 00:01:36 【问题描述】:在发布版本中生成 FCM 令牌。
在调试中,出现此错误 -
response: [403 Forbidden:
"error":
"code": 403,
"message": "Requests from this android client application com.example.app are blocked.",
"status": "PERMISSION_DENIED",
"details": [
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_ANDROID_APP_BLOCKED",
"domain": "googleapis.com",
"metadata":
"consumer": "projects/381175343517",
"service": "firebaseinstallations.googleapis.com"
]
]
E/Firebase-Installations:Firebase 安装无法通信 由于配置无效,使用 Firebase 服务器 API。请更新 您的 Firebase 初始化过程并设置有效的 Firebase 选项 (API 密钥、项目 ID、应用程序 ID)在初始化 Firebase 时。
我就是这样设置的-
-
在 Firebase 中使用 Release SHA-1 创建了我的 android 项目
在https://console.cloud.google.com/apis/ 我限制了自动生成的密钥
仅用于我的应用,提供带有应用包名称的 Release SHA-1。
API 限制:选择“不限制密钥”
启用 Firebase 安装
使用这段代码获取FCM令牌-
FirebaseMessaging.getInstance().token
.addOnCompleteListener
if (it.isSuccessful && it.result != null)
Toast.makeText(this, "Token generated!", Toast.LENGTH_SHORT).show()
else
Toast.makeText(this, "Token not generated!", Toast.LENGTH_SHORT).show()
到目前为止我尝试过的 -
在更改密钥时删除了自动生成的构建(和 values.xml 文件)目录。 使用 FirebaseOptions 进行设置 发布版本(有效) 在 Android 应用程序限制中也提供了我的调试 SHA-1,它可以工作,但如果我有 超过 20 人在开发这个应用程序,他们都必须提供他们的调试 SHA- 1?我觉得不好。 如果我删除 API 的应用程序限制(发布 SHA-1),那么它可以工作 用于调试和发布。但我想为我的应用程序限制它 仅限。预期结果:
应为发布和调试版本生成令牌实际结果:
没有为调试构建生成令牌。请帮忙,我已经尝试了有关此问题甚至相关问题的所有可用资源。
如果我需要提供任何其他信息,请告诉我。 谢谢!
【问题讨论】:
【参考方案1】:在 Android Studio 的终端中,使用此命令生成调试密钥库。
keytool -genkey -v -keystore myapp_debug_android.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "C=US, O=Android, CN=Android Debug"
myapp_debug_android.keystore
是文件名。
然后在您应用的 gradle 文件中使用此密钥库来调试签名配置:
signingConfigs
release
... release config
debug
storeFile file('../myapp_debug_android.keystore')
这将使您的调试构建哈希 (SHA) 在任何系统上保持相同。
【讨论】:
谢谢你! 如果有效,请将其标记为正确答案@User7788。快乐编码!以上是关于未为调试版本生成 Firebase 消息令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中删除 Firebase 云消息传递令牌