从Play商店下载的应用程序无法使用Google登录

10
  1. 创建了一个应用程序,它使用react-native-google-signin进行谷歌登录。
  2. 为我的应用程序创建了一个密钥库以签署我的应用程序,如此文档所述。
  3. 签署了我的应用程序并上传到Google Play商店
    • 当我被问及是否要选择Google Play应用签名时,我同意了。
  4. 如果我尝试登录我的应用程序(从Play商店下载),我会收到一个错误messsage:DEVELOPER_ERRORerror code: 10

注意1:我的应用程序没有使用Firebase。

注意2:如果我直接将apk安装到我的设备上,则似乎可以正常登录。

我确定问题与应用程序如何使用Google Play应用程序签名有关,但我无法确定问题所在。

更新:

  • 此处下载了google-services.json并将其添加到 /android/app 下,现在如果我从发布管理页面下载并手动安装应用程序,则应用程序可以正常工作,但是如果我直接从Google Play商店安装它仍然无法使用。

你是否已将SHA1密钥添加到Firebase控制台配置中? - Gaurav
你需要在 Firebase 控制台中添加发布密钥 SHA-1。 - Priya
我没有使用Firebase,Firebase的使用是强制性的吗? - Raghudevan Shankar
你使用的后端是什么? - Alexander Vitanov
没有后端,这是一个简单的应用程序(用于跟踪开支的账簿)。 - Raghudevan Shankar
1
@Raghudevan:您能将您的答案移动到适当的答案框中吗?我们不鼓励将答案合并到问题帖子中。 - halfer
4个回答

15
非常简单,进入您上传已签名APK的play store帐户。选择您的应用程序,然后转到发布管理部分,然后是应用签名
复制应用程序签名证书的SHA1密钥。
转到此链接https://developers.google.com/identity/sign-in/android/start-integrating 单击配置项目按钮
选择您的应用程序,选择Android,应用程序包名称,然后粘贴SHA1证书
然后点击创建。 就这样。
现在您可以在应用程序中使用google登录。

2
2021年更新:现在是Google Play商店->发布部分->设置->应用完整性。 - Maxwell
我希望我能给你更多的分数。你解释的方式真的很有帮助。像魔法一样起作用。 - Kazi Hasan Ali
如果您正在使用Firebase:不要像答案建议的那样在Google控制台中添加sha1证书,而是应该在Firebase控制台中添加。 - Alex Rendón

10

解决方案:

  • 问题在于生成google-services.json时,需要提供App签名证书SHA-1证书指纹; 我提供的是上传证书SHA-1证书指纹,因此它无法在生产环境中运行。
  • 实质上,在凭据页面中,您需要为Android创建两个oauth客户端ID(一个使用App签名证书,另一个使用上传证书)和一个类型为web的oauth客户端ID;而在使用react-native-google-signin时,需要指定webClientId

2

您在调试模式下为应用程序添加了sha-1密钥,这样您就可以在应用程序中使用Google登录。 但是随着应用程序进入生产阶段,它需要生产环境的sha-1密钥。 您需要在Firebase控制台上添加该密钥。 您可以检查Firebase控制台并检查Android应用程序。

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 

以上命令用于创建调试版本的sha-1密钥。

你需要提供生产环境sha-1所需的签名密钥存储文件路径。 并且这可以通过以下命令完成

keytool -exportcert -list -v \-alias <your-key-name> -keystore <path-to-production-keystore>

您只需要为发布的 APK 提供密钥库文件的具体路径。


好的,但这是生产应用程序的sha1问题。 - Prince
你必须在android/app或android/app/src/debug中提供google-service.json文件,然后在生产密钥哈希中提供此信息。{ "client_id": "xyz_abc_pqr.......apps.googleusercontent.com", "client_type": 1, "android_info": { "package_name": "package_name", "certificate_hash": "用于生产的sha-1密钥哈希" } }, - Prince
所以,在添加了google-services.json之后,如果我从发布管理页面下载并使用adb手动安装应用程序,则它可以正常工作,但是当从应用商店下载时仍然无法工作。@prince - Raghudevan Shankar
根据 react-native-google-sign 的文档,您必须在 console.firebase.google.com 上创建一个应用程序。 - Prince
你从哪里下载那个文件的? - Prince
显示剩余3条评论

2
昨天我也遇到了同样的问题。
谷歌在Play商店发布控制台中发布了一个新的签名服务,谷歌将使用其密钥库对您的应用进行签名。签名后,它会给你一个新的SHA,你需要将其添加到你的Fireenter image description herebase账户中。请参见图片以更好地理解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接