Firebase、Google身份验证和电话身份验证存在SHA-1问题

pgccezyw  于 2023-03-19  发布在  Go
关注(0)|答案(5)|浏览(445)

我目前正在做一个应用程序,你也可以通过你的谷歌帐户或移动的号码登录Firebase。与keytool我已经读了我的SHA-1,并将其存储在Firebase的项目设置(我还通过Android-Studio中的Gradle读取SHA-1值,当然,它与Keytool中的值相同。)。当我在调试时测试应用时,一切正常。一旦我发布了APK(已签名的APK V1 & V2)并安装了此APK,就无法通过Google或移动的号码登录。错误:
此应用未被授权使用Firebase身份验证。请验证在Firebase控制台中配置了正确的软件包名称和SHA-1。[应用验证失败]
在Firebase控制台中,指定了正确的SHA-1。或者在发布后APK有不同的SHA-1值?为什么在调试时一切都正常,而在发布后就不行了?
如果有人能帮助我,那就太好了。

v440hwme

v440hwme1#

在花了一整天的时间找出问题所在之后,我找到了罪魁祸首!我们是在Google Play的应用签名中选择加入的。我们需要从应用签名本身注册SHA-1。您可以在Google Play控制台内部的“版本管理”〉“应用签名”下找到SHA-1。SHA-1将具有两种类型的证书:
1.上传证书:这是已上传的密钥库中的证书信息。这需要与本地应用签名的密钥库相同,因为Google Play将验证已上传的应用是否与此签名证书匹配。
2.App签名证书:上传应用程序后,Google将使用此证书替换上传证书。这是一个新证书,将用于在Play商店中发布的应用程序。
有了这些信息,我才意识到我们还没有为已发布应用使用的应用签名证书注册SHA-1。因此,我在Firebase〉应用的项目设置中添加了SHA-1(也是SHA-256,以防万一)指纹注意:(添加指纹后不要忘记更新最新的配置文件-如果你使用flutter,记得清理并重建你的项目)-.
因此,添加SHA指纹后,Firebase SHA证书指纹将如下所示:

现在保存更改,然后返回到您的应用程序并再次测试它,它现在将工作!.

j91ykkif

j91ykkif2#

为了防止滥用的firebase手机认证不会在模拟器中工作。
但如果你想测试的目的,那么你应该添加使用一些测试电话号码在firebase控制台,将工作在模拟器。
进入您的firebase控制台-〉身份验证-〉登录方法-〉电话,并检查“电话号码测试(可选)”字段。

请确保您要添加的电话号码之前未登录/注册。如果该号码已存在于验证中,则无法将其添加为测试帐户。
如果您没有使用模拟器,请执行以下操作:
工具〉Firebase〉身份验证〉连接〉同步
这通常发生在你更新android studio的时候。

ffdz8vbo

ffdz8vbo3#

最后我找到了一个解决方案!!!release apk和debug apk的SHA-1和SHA-256值不同。创建一个带有这两个签名的release apk后,你必须用keytool手动查询该版本的SHA-1值。然后可以在Firebase控制台中输入。

vngu2lb8

vngu2lb84#

当你在调试模式下,你需要添加sha1和sha 256到firebase。首先创建一个签名密钥:

keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

然后添加包含此关键信息的android/key.properties文件。

storePassword=pass_u_entered
keyPassword=pass_u_entered
keyAlias=key
storeFile=/Users/Desktop/key.jks

在你的项目终端中,进入android文件夹(cd android),然后在终端中运行:

cd android
./gradlew signingReport

然后你会得到调试和发布模式下的sha1和sha 256。复制它们并把它们放到你的firebase项目中:应用程序设置=〉常规并添加调试和发布的sha1和sha 256:

当应用程序在生产时,你需要从Google Play控制台添加Sha。在Google Play控制台上转到你的应用程序=〉设置=〉应用程序完整性然后复制Google签名的Sha1和Sha 256,并将它们添加到Firebase上的上一个屏幕。
就这样。我希望有一天这能保存一个人的命;)

mkh04yzy

mkh04yzy5#

如果还有人需要的话,这里有详细的解释...
在调试时,您可以创建一个debug sha1密钥,它可以让您在调试模式下正常工作,但是当您创建一个签名的apk时,您需要为发布版本生成一个sha1。
对于这个,keytool -list -v -keystore (now here you need to provide the relative path for your key.keystore[which you generated while generating signed apk]) -alias (now the alias name is present in gradle.properties and default is my-key-alias)
此外,这也适用于那些在特定设备上创建签名apk后应用程序获得OTP的用户,而不是在其他设备上。
希望这个有用。

相关问题