Firebase 身份验证工作正常,调试构建突然开始失败,没有任何代码更改,记录以下消息
D/PhoneAuthActivity( 7392): signInWithCredential:failure:com.google.firebase.auth.FirebaseAuthException: This app is not authorized to use Firebase Authentication. Please verifythat the correct package name and SHA-1 are configured in the Firebase Console. [ App validation failed ].
成功登录和失败之间唯一值得注意的操作是 android studio 升级。
更新(2021 年 10 月 11 日):
-
从 Play 商店控制台中找到 SHA-1 和 SHA-256 BOTH certificateS 指纹。
Play store Console > Your project > Release > Setup > App integrity
-
将 SHA-1 和 SHA-256 指纹一个一个地放置到您的 Firebase 应用程序中。
Firebase Console > Your project > Settings of the app > Add Fingerprint
注意以下几点
如果您使用模拟器进行电话 OTP 验证,则它不会工作,因为它没有 sim。因此,请尝试将其安装在您的手机上(使用 sim 卡)。
确保您使用的是最新/更新的 google-services.json。
正确遵循启用应用验证步骤。并且 Android 设备验证已启用。
确保在启用 Android 设备验证时从下拉列表中选择了正确的项目。
要在 Firebase 项目中添加的 SHA-1 和 SHA-256 指纹。
完成所有工作后,请确保您使用的是最新/更新的 google-services.json 文件。
-
尝试了多个建议。这是唯一有效的! 1
-
这是唯一有意义的。
-
是的,我相信这是 2019 年最大的混乱来源。一些 Firebase/React 教程告诉您使用 keytool 从您的发布密钥中获取 SHA 指纹,但实际上您签署了"让 Google 管理您的应用程序证书" Play 控制台,这就是您必须在 Firebase 控制台上复制和粘贴的内容。
-
这是最好的答案
-
对于我自己,我不得不从 android studio 粘贴实际的 SHA1
-
你拯救了我的一天SSS
-
无需再次编译应用程序即可完美运行,它可以直接从 Play Store 和 Firebase 的控制台设置中运行......
-
即使在将应用程序发布到商店后也有帮助
-
这将需要时间或直接更新。我执行上述步骤但得到相同的错误
-
@MaulikSantoki 它不应该超过一个小时。
-
非常感谢。这是最好的答案
-
还要注意它是否是您要使用的调试密钥工具。
-
有关更多信息 - 新 Play 管理中心中的应用签名已更改为应用完整性。这个答案对我来说更好。它不包括再次发布应用程序并等待审核。
-
@KishanSolanki我也有这个问题,但就我而言,我正在尝试模拟器。它在真实设备上运行良好。
-
@RumitPatel 我知道兄弟我们应该在真实设备上测试它。离开真实设备,我正在应用程序的实时版本中测试它(不是在调试中),但仍然无法正常工作。这似乎是一个古老的答案。如果您现在(今天)尝试此操作,它将无法正常工作。
-
@KishanSolanki 这不是一个旧答案,只需要使用一些附加信息对其进行更新。实际上,添加了一个名为"启用应用程序验证"的步骤。另一件事是在 Firebase 控制台上添加 Sha-256。它完成了。如果问题仍然存在,请告诉我,我很乐意提供帮助。 :-)
-
@RumitPatel 你知道吗,我也已经添加了。但在那之后,我面临一个新的问题。我确实也问过 StackOverflow 的问题,这里是链接 stackoverflow.com/q/66757620/8874958 ,请检查您是否可以提供帮助。
-
谢谢。添加 SHA-256 指纹(到现有的 SHA-1)对我来说就足够了
-
如果您选择了 Google Managed App Signing Key,请更新此步骤是强制性的答案,否则您可以使用 signingReport gradle 任务获取签名详细信息并将 SHA 添加到 firebase 甚至使用 apksigner -verify --print-certs <path/to/apk>
-
@guneetgstar,正确。但是 google-play 上的大多数项目都选择了 App Signing Key
-
大多数但不是全部。正如我所说的,密钥可以通过其他方式提取,因此如果他不知道他发布的应用程序是否已经选择了 Google App Signing key,他最终可能仍会添加错误的密钥
-
谁能解释 Play Store SHA 和关键工具 SHA 之间的区别?很困惑去哪
-
@ishandutta2007 应该将此标记为正确答案!
-
这对我有用。甚至我从 android studio 为签名的 APK 生成 SHA1 和 SHA-256 并添加到 firebase 但没有工作。然后我按照这个解决方案工作了!!!!!!
-
在开发过程中,是否有人尝试使用模拟器查看控制台,但输入的电话号码实际上是发送到真实设备的?当然,模拟器没有 SIM 卡,但输入的电话号码是有效的。这意味着我同时使用模拟器设备和真实设备。
-
非常感谢,不知何故我们错过了,这个答案挽救了我们的一天。
-
我对此解决方案有一个主要问题。在我的设备上,这就像魅力一样,我注册了我的应用程序测试以从应用程序商店获取我的应用程序。但是,我的客户(以与我相同的方式获取应用程序)抱怨收到此错误。我们之前遇到过这个错误,然后我就这样做了。它是为我修好的,但不适用于我的任何客户。请问这可能是什么根本原因?
-
@MartinBraun,我多次遇到同样的问题。我不知道根本原因,但我删除了所有 SHA-1 和 SHA-256 并重新插入它们并且它起作用了。是的,请确保您使用的是最新的 google-services.json 文件。尝试更新它。注意:请在重新插入 SHA-1 和 SHA-256 条目后更新 google-services.json 文件。
-
@RumitPatel 非常感谢。我想我真的搞砸了 google-services.json。我完全按照你告诉我的做了,现在它可以工作了。
-
谢谢。该解决方案得到了很好的解释并且确实有效!
-
在真实设备上使用调试模式,我尝试了答案中的所有步骤(从播放控制台添加指纹并调试),但我仍然收到错误:错误:[auth/app-not-authorized] 这个应用程序不是授权使用 Firebase 身份验证。请确认在 Firebase 控制台中配置了正确的包名称和 SHA-1。 [ 通过了一个安全网令牌,但在 Firebase 控制台中没有注册匹配的 SHA-256。请确保此应用程序的 packageName/SHA256 对已在 Firebase 控制台中注册。 ]
-
@RabbiShukiGur,对于调试构建,您不需要遵循所有这些步骤。您只需要从 Android Studio 获取 SHA1 指纹。
当您更新 Android Studio 时,用于签署调试应用程序的调试密钥可能已更改。只需在 firebase 控制台中添加调试密钥的新 SHA-1 校验和即可。
最简单的方法是从
连接/同步到 firebase
Tools>Firebase>Authentication>Connect>Sync
如果您想手动执行或发布密钥库,请首先使用以下命令生成 SHA-1 校验和:
1
| keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME |
然后复制 SHA-1 校验和并转到:
Firebase Console > Your project > Settings of the app > Add Fingerprint
有关更多信息,请阅读本指南:验证您的客户 |适用于 Android 的 Google API
- 但是这个错误是针对已签名的 apk 的。我也实施了 firebase 和 ON 身份验证。它适用于 debug.keystore,但不适用于从我的 keyStore 生成的 SHA。奇怪的。还有其他有这个问题吗?
-
我已经这样做了。但我发现了完全奇怪的解决方案。我稍后会在这里发布。
-
你能把它贴在@RumitPatel 上吗?遇到同样的问题。
-
@gowithefloww ,是的,请稍候。明天可能会发布。
-
@gowithefloww,请检查答案,下次可能会对您有所帮助。 :-)
-
我也无法与项目同步
-
我们正在使用颤振,所以我们得到了以下错误,有什么建议吗?找不到 Android 应用程序模块。只有 Android 应用程序模块可以连接到 Firebase 在线项目。创建新的 Android 应用程序模块或创建/导入不同的 Android Studio 项目
如果您使用模拟器进行电话 OTP 验证,则它不会工作,因为它没有 sim。因此,请尝试将其安装到您的手机(使用 sim 卡)并检查错误是否仍然存在。
-
你是怎么想出这个的?
-
我已经在模拟器上试过了,但它不起作用。然后我认为问题出在虚拟手机上,所以将它安装在它工作的真实手机上。
如果是 Linux 机器
第 1 步:转到文件系统中项目的物理文件目录
第 2 步:转到您的项目> android>
第三步:点击右键,在这个目录下打开一个新的终端
第 4 步:运行命令 'gradlew signingReport'
第 5 步:复制您的 SHA-1 密钥或 SHA-56 密钥
第 6 步:转到 Firebase 控制台>您的项目>项目设置>添加指纹
第 7 步:粘贴您的 SHA-1 密钥或 SHA-56 密钥并保存。
现在,你可以走了。
谢谢。
-
101%解决问题
-
如果你在 android 目录中,它只是 gradlew signingReport 而不是 ./gradlew signingReport
好的,我刚刚发现了问题..
如果您使用的是 Play 商店应用签名,那么您分发的应用的 SHA1 将与您在本地使用的不同。确保将 SHA1 密钥从 Play 控制台添加到 Firebase 控制台中的应用。
-
另外,需要重新下载 google-services.json 文件,并在提交到应用商店后添加到应用中。然后重新上传到google play store。
-
你是什??么意思"重新上传到谷歌游戏商店?"上传什么?
-
@PeteAlvin 我猜他的意思是在从 Play 商店应用签名添加 SHA1 后下载 google-services.json 文件
如果您使用的是 Google 内部应用共享,请注意,Google 会自动使用与此处所述完全不同的证书对您的构建进行签名,您需要找到由 Google 自动为您的应用构建提供的签名证书信息。
查找证书;
登录您的 Play 管理中心。
选择您的应用。
在左侧菜单中,选择开发工具 > 内部应用共享。
选择"应用程序证书"选项卡,然后将 SHA-1 复制到您的 Firebase 控制台。
-
在我偶然发现您的答案之前,花了几天时间在 GCP 周围翻找。我所要做的就是向下滚动叹息。谢谢@Roach
-
很高兴我能帮助@NathanyAttipoe
n
-
确切的解决方案,我遇到了同样的问题,使用 SHA256 解决了 firebase。
这花了我两天时间。我尝试了接受的解决方案(由 Nabin Bhandari 提供),但这对我不起作用。然后终于设法做到了如下。
转到"构建> 生成签名包/APK"。
如果您想将应用上传到 Play Store,请选择"Android App Bundle",否则您可以使用"APK"。然后下一步。
现在在"密钥存储路径"中单击"新建"。在对话框中输入详细信息。当您单击"确定"时,您将生成密钥文件。
输入密钥路径、密码等
根据需要选择"调试"或"发布"。在此之后,您的签名 apk 会在 [project Directory]\\\\app\\\\debug.
中生成
现在使用(由 Nabin 建议)生成 SHA-1 密钥:
keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME
使用 adb install app-debug.apk 在设备中安装应用程序。现在该应用程序可以运行了。
开发/调试提示:使用 Run 时安装签名的 APK。
当您再次单击运行时,已签名的应用程序将被覆盖,您可能会再次遇到问题。所以当点击运行'app'时需要安装签名的apk。
将这些值添加到您的 .gradle 文件 (Module:app):
1 2 3 4 5 6 7 8
| signingConfigs{
debug{
keyAlias 'your key alias'
keyPassword 'your keypassword'
storeFile file('keystore path')
storePassword 'your storepassword'
}
} |
参考:看这里
n
n
-
您如何访问 Google Play 控制台中的 SHA-1?
-
nvm - 这是 Google Play 控制台 -> 选择应用程序 -> 设置 -> 应用程序完整性 -> 应用程序签名密钥证书 -> SHA-1
在 Firebase 中更新您的应用指纹,它对我有用。
第 1 步:
通过在终端中运行此命令获取最新的 SHA-1
对于 Linux 或 macOS:
1
| keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android |
对于 Windows:
1
| keytool -list -v -keystore"%USERPROFILE%\\.android\\debug.keystore" -alias androiddebugkey -storepass android -keypass android |
第 2 步:
转到 Firebase 控制台并删除最近添加的指纹
Firebase 控制台 > 您的项目 > 项目设置 > 删除指纹
下一步:
Firebase 控制台 > 您的项目 > 项目设置 > 添加指纹
粘贴新的 SHA-1 指纹并保存。它现在可以正常工作了。
我也遇到了同样的问题,解决方法如下
像本文档一样生成 .keystore 文件
https://facebook.github.io/react-native/docs/signed-apk-android
通过此命令生成 SHA-1 密钥
1
| keytool -list -v –keystore [PATH]\\android\\app\\my-upload-key.keystore |
并复制证书指纹下的 SHA1 密钥并将其添加到 firebase 应用程序设置->常规选项卡->您的应用程序部分->SHA 证书指纹
我发布晚了,但这是我发现的一个非常简单的技巧 下载此密钥资源管理器
并探索您的应用签名密钥(.jks),您将能够获得 SHA-1
n
n
n
n
n
n
看看这个线程:
调试模式下如何在 Android Studio 中获取 SHA-1 指纹证书?
现在您将如何轻松获取应用程序的 SHA-1 键(无需 -keytool 命令)并将 id 添加到 Firebase 控制台。然后您必须更新项目中的 google-services.json 文件。