【问题标题】:Firebase Messaging token not generated for Debug build未为调试版本生成 Firebase 消息令牌
【发布时间】: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 时。

我就是这样设置的-

  1. 在 Firebase 中使用 Release SHA-1 创建了我的 android 项目
  2. https://console.cloud.google.com/apis/ 我限制了自动生成的密钥 仅用于我的应用,提供带有应用包名称的 Release SHA-1。
  3. API 限制:选择“不限制密钥”
  4. 启用 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),那么它可以工作 用于调试和发布。但我想为我的应用程序限制它 仅限。

预期结果:

  • 应为发布和调试版本生成令牌

实际结果:

  • 没有为调试构建生成令牌。

请帮忙,我已经尝试了有关此问题甚至相关问题的所有可用资源。

如果我需要提供任何其他信息,请告诉我。 谢谢!

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案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。快乐编码!
    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2022-12-21
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2018-03-24
    相关资源
    最近更新 更多