Google 登录不适用于 Android 的发布版本
Posted
技术标签:
【中文标题】Google 登录不适用于 Android 的发布版本【英文标题】:Google signin not working on release version of android 【发布时间】:2016-07-28 04:28:19 【问题描述】:我当前的应用程序出现问题。 我的 OAuth2.0 SHA1 是正确的,并且是从发布版本的密钥库文件生成的。 我的问题是我每次在 onActivityResult 上都收到 resultCode = 0。 我打印出意图的价值并得到以下信息: googleSignInStatus=状态statusCode=INTERNAL_ERROR,分辨率=空 但是,如果我在调试模式下运行它,登录工作完美,对于这种情况,意图值是: googleSignInAccount=com.google.android.gms.auth.api.signin.GoogleSignInAccount@31976389]
有谁知道如何解决这个问题。 注意:我在某处发现了一篇他们建议将电子邮件和项目名称放在 OAuth 竞赛屏幕上的帖子;我已经试过了,还是不行。
【问题讨论】:
获取发布版本的 SHA1 密钥->在 api 控制台中添加 SHA1 密钥。欢呼 感谢您的回复。但正如我已经提到的,发布版本的 SHA1 密钥在 api 控制台中。 【参考方案1】:显然首先检查您的发布 sha1 密钥是否正确。但这里的问题不同。我正在使用新的 google play 服务(即编译 'com.google.android.gms:play-services:8.4.0')。并且可以通过修改 GoogleSignInOption 对象来解决问题。 而不是:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
.build();
我用:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.requestScopes(new Scope(Scopes.PLUS_ME))
.requestEmail()
.build();
这解决了返回 statusCode=INTERNAL_ERROR 的错误。 然后这个 gso 对象可以用来创建 GoogleApiClient,如下所示:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API,gso)
// .addApi(Plus.API, null)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
// .addScope(Plus.SCOPE_PLUS_LOGIN)
.build();
【讨论】:
对我来说,这是我使用调试 sha 发布我的应用程序的 sha1,然后我将生成并添加了发布 sha1 到我的服务器项目设置中,我准备好了。以上是关于Google 登录不适用于 Android 的发布版本的主要内容,如果未能解决你的问题,请参考以下文章
Google 登录不适用于 Play 游戏服务启用,但无需启用
C++Builder TWebBrowser 不适用于 Google OAuth 登录