Firebase的SHA-1问题以及Google-Auth和Phone-Auth

时间:2018-09-05 14:53:03

标签: android firebase firebase-authentication

我目前正在制作一个应用,您还可以在其中通过Firebase通过您的Google帐户或手机号码登录。使用keytool,我已经阅读了SHA-1,并将其存储在Firebase的项目设置中(我也通过Android-Studio中的Gradle读取了SHA-1值,当然,它与Keytool中的值相同。)。当我在调试时测试应用程序时,一切正常。一旦发布APK(签名的APK V1和V2)并安装了该APK,就无法通过Google或手机号码登录。 错误:

  

该应用无权使用Firebase身份验证。请确认在Firebase控制台中配置了corecct软件包名称和SHA-1。 [应用验证失败]

在Firebase控制台中,指定了正确的SHA-1。发行后,APK的SHA-1值是否不同?以及为什么一切在调试时都能正常工作,而不是在发布之后。

如果有人可以帮助我,那将非常好。

5 个答案:

答案 0 :(得分:1)

最后我找到了解决方案!!! 版本apk与调试apk具有不同的SHA-1和SHA-256值。创建具有两个签名的发行版APK之后,您必须使用keytool手动查询发行版的SHA-1值。然后可以在Firebase控制台中输入。

答案 1 :(得分:0)

为了防止滥用,firebase电话身份验证将无法在模拟器中工作。

  

但是,如果您希望将其用于测试目的,则应添加一些   在Firebase控制台中测试可以在模拟器中使用的电话号码。

转到您的Firebase控制台->身份验证->登录方法->电话,然后检查“用于测试的电话号码(可选)”字段。

enter image description here

确保您之前添加的电话号码未登录/注册。如果验证中已经存在该号码,则您无法将该号码添加为测试帐户。

如果您不使用模拟器,请遵循以下步骤:

  

工具> Firebase>身份验证>连接>同步

这通常在您更新android studio时发生。

答案 2 :(得分:0)

如果仍然有人需要,这里有详细的解释...

在调试时,您会创建一个调试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。

希望这会有所帮助。

答案 3 :(得分:0)

花了整整一天的时间弄清楚了问题所在。我找到了罪魁祸首!我们选择加入的是Google Play的应用签名。我们需要通过应用签名本身注册SHA-1。可以在Google Play控制台内部的“发布管理”>“应用签名”下找到该文件。它将具有两种类型的证书:

1. 上传证书:这是来自上传的密钥库中的证书信息。本地应用程序签名时需要与密钥库相同,因为Google Play会验证上传的应用程序是否与此签名证书匹配。

2. 应用程序签名证书:上传应用程序后,Google会使用此证书替换上传证书。这是新证书,将用于Play商店中已发布的应用。

有了这些信息,我才意识到我们尚未为已发布的应用程序所使用的应用程序签名证书注册SHA-1。因此,我在应用程序的Firebase>项目设置中添加了SHA-1指纹(也可以在需要时使用SHA-256)(添加指纹后不要忘记更新最新的配置文件)。

因此,添加您的SHA指纹后,您的Firebase SHA证书指纹将如下所示: enter image description here

现在保存更改,然后返回到您的应用并再次对其进行测试,它将立即开始工作。

答案 4 :(得分:0)

您可以在终端中运行它:

./gradlew signingReport

然后您将得到sha1和sha256