好的,我知道这个问题已经被问过多次,但由于某种原因这个错误不断发生,情况是这样的:
创建了 PROD firebase 项目,在运行良好的 Android 项目(Android 项目路径:app/google-services.json)中插入了 google-services.json,包含:
- 两个 SHA1 key - 来自 .android/debug.keystore(目前)和自定义发布 keystore (2 个基于这些 key 的 Oauth2 Android 客户端 ID)
- 用于 Google 登录的 Oauth2 Web 客户端 ID - 我已将它们放入 Firebase Console/Authentication/Providers/Google Sign In/Web SDK Configuration
- Firebase 项目 ID 为 com.companyname.projectname 格式
然后我创建了 DEV firebase 项目 (app/debug/google-services.json) 并完成了以下操作:
- 创建自定义调试 keystore ,导出 SHA1 并将其添加到 Firebase 项目中(该 keystore 用于签署调试)
- 在
build.gradle
中,将此调试 keystore 分配给调试构建类型并且正在运行 - 它正在使用该 keystore 进行签名 - 创建新的 Oauth2 Web 客户端 ID 并以与 Google 登录提供商的 PROD 相同的方式插入它
- 此项目的 Firebase 项目 ID 是 com.companyname.projectname-dev(在构建类型调试中添加了应用程序后缀)
当我使用调试构建类型运行应用程序时,会发生以下情况:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
GoogleSignInClient googleSignInClient = GoogleSignIn.getClient(this, gso);
很好 - requestIdToken 是来自 DEV Firebase 项目的 Oauth2 Web 客户端 ID
BuildConfig.APPLICATION_ID
返回 DEV applicationId(带有 -dev 后缀)
但是当我转到 onActivityResult() 时,我从这个问题的标题中得到了什么 - RESULT_CANCELED + 12500 结果错误
有人遇到过同样的问题吗?
对于相当困惑的问题,我深表歉意,如有必要,我会添加更多信息。
注意:我曾尝试在 DEV 项目中使用 .android/debug.keystore SHA1,但我遇到了与上述相同的问题。
最佳答案
我首先尝试的是:
我想通过这个错误 ApiException: 12500 很久了。我尝试了一切:
- 删除我的调试 keystore ,重新创建一个
- 在 firebase 控制台上添加支持电子邮件
- 更改插件版本
- 在我的设备上更新谷歌
但是当我在浏览stackoverflow的时候,我找到了一个解决方案:
也许解决方案:
我去了这个页面 ( https://console.developers.google.com/apis/credentials ) 不要忘记在列表(左上角)中选择您的项目。然后继续“Oauth 同意屏幕”
我填写了几乎所有字段:应用程序 Logo 、电子邮件支持、应用程序主页链接、应用程序隐私政策链接(与 project.firebaseapp.com);我保存了。
现在正常了,我可以登录了。
希望对你有帮助
来源
感谢 Pranjal Gupta 的回答:Google Sign In error 12500
关于android - Firebase 登录 : GoogleSignIn onActivityResult() returns RESULT_CANCELED with Result error 12500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57012033/