未知状态码:17028 已通过安全网令牌,但未注册匹配的 SHA-256
Posted
技术标签:
【中文标题】未知状态码:17028 已通过安全网令牌,但未注册匹配的 SHA-256【英文标题】:unknown status code: 17028 A safety_net_token was passed, but no matching SHA-256 was registered 【发布时间】:2021-06-25 03:18:45 【问题描述】:未知状态代码:17028 已通过安全网令牌,但在 Firebase 控制台中未注册匹配的 SHA-256。请确保此应用的 packageName/SHA256 对已在 Firebase 控制台中注册。
你好,我在开发应用程序时遇到了这个问题,我已经尝试修复,这些是我到目前为止所做的步骤,但结果相同:
使用 firebase 上的步骤正确配置了 firebase 和我的 Flutter 应用程序 我已经签署了我的应用程序并添加了调试和发布密钥的签名密钥,包括 SHA-1 密钥和 SHA-256 密钥 我也在谷歌云页面启用了安卓验证 我已启用身份验证提供程序、启用电话身份验证、启用密码/电子邮件除此之外,当我使用添加到控制台的测试电话号码和插入的 otp 代码时,我的应用程序运行良好 但是当尝试使用其他未注册的电话号码对手机进行身份验证时,它一直显示错误。
我检查过颤振医生 -v 它没有错误 也执行颤振命令,结果没有任何与错误相关的东西。我使用了以下 firebase 插件
firebase_auth:^0.18.4+1 firebase_core:^0.5.3 cloud_firestore: ^0.14.4 firebase_admob: firebase_messaging:^7.0.3 firebase_storage: ^5.2.0
您的任何帮助将不胜感激
【问题讨论】:
能否请您从控制台添加错误? 【参考方案1】:解决方法是: 如果您正确配置了 firebase 和应用项目,那么
运行flutter clean
以清理您的项目依赖项。
从 firebase 下载新的 google-services.json 文件并将其添加到 Flutter 项目的 app 文件夹中。
运行flutter pub get
再次获取所有依赖项。
运行您的项目。
那你就可以走了。它对我有用。
【讨论】:
所有这些步骤都试过了。 那么,它是否有效? 我仍然面临同样的问题,仍在调查中 解决方法是:按“Win + R”并运行“resmon.exe”。转到 CPU 选项卡并在 Associated Handles 搜索栏中搜索“build”。右键单击“java.exe”进程,然后单击END PROCESS。运行 flutter clean 来清理你的项目依赖。从 firebase 下载新的 google-services.json 文件并将其添加到 Flutter 项目的 app 文件夹中。运行 pub get 再次获取所有依赖项。运行你的项目。那你就可以走了。它对我有用。 我正在使用ubuntu,你能详细说明在ubuntu上做什么吗?【参考方案2】:我也遇到过类似的问题。我的解决方案是:重新生成 my-upload-key.keystore。希望对你有用!
【讨论】:
【参考方案3】:我的情况是,我发现谷歌已将我猜想的应用程序放入黑名单,因为我尝试使用不同的应用程序密钥使用相同的代码,它起到了一种魅力,但该密钥已被列入黑名单,它不起作用还是。
感谢您的回答,非常感谢
【讨论】:
【参考方案4】:您必须启用应用验证。
你可以检查这个答案 https://***.com/a/53513327/14709655
你可以使用这个链接 https://firebase.google.com/docs/auth/android/phone-auth#enable-app-verification
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案5】:如果上述所有解决方案都尝试过,请按照我的解决方案。我相信你的问题可能和我的一样。
请检查您的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']
在我非常好的 cli 创建的项目中,signingConfigs 配置为仅用于发布构建,因此我自己生成的密钥不用于构建调试 apk。所以
来自flutter项目的根目录
cd android/
./gradlew signingReport
收集您的默认 SHA-1 和 SHA-256 密钥并在 firebase 控制台上更新。
flutter clean
并运行项目
不需要更新google-service.json
文件
【讨论】:
这部分解决了它:从颤振项目的根目录 cd android/ ./gradlew signingReport 收集您的默认 SHA-1 和 SHA-256 密钥并在 firebase 控制台上更新。【参考方案6】:在我的情况下,我在 firebase 中添加的 SHA-1 和 SHA-256 密钥与 Play 商店应用程序完整性证书不同。
所以我在firebase项目中添加了一个来自本地机器的设置和另一个来自Play控制台应用程序完整性的设置,如下图所示:
【讨论】:
以上是关于未知状态码:17028 已通过安全网令牌,但未注册匹配的 SHA-256的主要内容,如果未能解决你的问题,请参考以下文章
InvalidClientTokenId:请求中包含的安全令牌无效。状态码:403
Laravel 通过 Passport 实现 API 请求认证:第三方应用篇(授权码获取令牌)