未知状态代码:17028 已传递 safety_net_token,但未注册匹配的 SHA-256

问题描述 投票:0回答:8

未知状态代码:17028 已传递 safety_net_token,但在 Firebase 控制台中未注册匹配的 SHA-256。请确保此应用程序的 packageName/SHA256 对已在 Firebase 控制台中注册。

你好,我在开发应用程序时遇到这个问题,我已尝试修复,这些是我迄今为止所做的步骤,但结果相同:

  • 使用 firebase 上的步骤正确配置了 firebase 和我的 flutter 应用程序
  • 我已经签署了我的应用程序并添加了签名密钥(调试密钥和发布密钥)、SHA-1 密钥和 SHA-256 密钥
  • 我也在谷歌云页面启用了Android验证
  • 我已启用身份验证提供商、已启用电话身份验证、已启用密码/电子邮件

此外,当我使用添加到控制台的测试电话号码和插入的 otp 代码时,我的应用程序运行良好 但是当尝试使用其他未注册的电话号码验证手机时,它一直显示错误。

我已经检查了 flutter doctor -v 它没有错误 还执行 flutter 命令,结果中没有任何与错误相关的内容。我使用过以下 firebase 插件

firebase_auth:^0.18.4+1 firebase_core:^0.5.3 云火存储:^0.14.4 firebase_admob: firebase_messaging: ^7.0.3 firebase_storage:^5.2.0

您的任何帮助将不胜感激

firebase flutter verification one-time-password
8个回答
6
投票

解决这个问题的方法是: 如果您正确配置了 firebase 和应用程序项目,那么

  • 运行
    flutter clean
    清理项目依赖项。
  • 从 firebase 下载新的 google-services.json 文件并将其添加到 flutter 项目中的 app 文件夹中。
  • 运行
    flutter pub get
    再次获取所有依赖项。
  • 运行您的项目。

那么你就可以开始了。这对我有用。


4
投票

如果以上所有解决方案均已尝试,请按照我的解决方案进行操作。我相信你的问题可能和我的一样。

请检查您的

android/app/build.gradle
文件。

signingConfigs {
        if (System.getenv("ANDROID_KEYSTORE_PATH")) {
            release {
                storeFile file(System.getenv("ANDROID_KEYSTORE_PATH"))
                keyAlias System.getenv("ANDROID_KEYSTORE_ALIAS")
                keyPassword System.getenv("ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD")
                storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
            }
        } else {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
                storePassword keystoreProperties['storePassword']
            }
        }
    }

在我的verygood cli 创建的项目中,signingConfigs 配置为仅用于发布版本,因此我自己生成的密钥不用于构建调试apk。所以

来自flutter项目的根目录

cd android/
./gradlew signingReport

收集您的默认 SHA-1 和 SHA-256 密钥并在 firebase 控制台上更新。

flutter clean
并运行项目

不需要更新

google-service.json
文件


3
投票

就我而言,我发现谷歌已将我的应用程序列入黑名单,因为我尝试使用不同的应用程序密钥使用相同的代码,它起到了作用,但该密钥已被列入黑名单,它仍然无法工作。

感谢您的回答,非常感谢


1
投票

我也遇到过类似的问题。我的解决方案是:重新生成 my-upload-key.keystore。我希望它会有用!


1
投票

您必须启用应用程序验证。

你可以查看这个答案 https://stackoverflow.com/a/53513327/14709655

您可以使用此链接 https://firebase.google.com/docs/auth/android/phone-auth#enable-app-verification


1
投票

就我而言,我在 Firebase 中添加的 SHA-1 和 SHA-256 密钥与 Play 商店应用程序完整性证书不同。

因此,我在 firebase 项目设置中添加了一个来自本地计算机的设置,另一个来自 Play 控制台应用程序完整性的设置,如下图所示:


0
投票

我也面临着类似的问题。因此,请在 Firebase 上添加 SHA-256 密钥,而不是 SHA-1


0
投票

我在测试电话 OTP 身份验证时遇到了同样的错误 E / FirebaseAuth(6429):[SmsRetrieverHelper]短信验证码请求失败:未知状态代码:17028 play_integrity_token中的应用程序信息无效

检查所有配置、SHA1、SHA256、googleservice.json、构建文件后。

我解决了它,

添加用于测试的电话号码:在 Firebase 控制台中,导航到“身份验证”部分 - 登录方法 - 按已启用的电话中的“编辑”按钮,然后找到“用于测试的电话号码”选项。添加您要用于测试的电话号码。

并使用给定的电话号码和 OTP 进行测试。

当您在 Firebase 控制台中指定用于测试的电话号码时,Firebase 允许仅使用这些指定的号码进行身份验证以进行测试。用于测试的任何其他电话号码将导致错误代码 17028,表明由于安全规则,操作被拒绝

© www.soinside.com 2019 - 2024. All rights reserved.