简体   繁体   English

Google登录不适用于Android的发行版

[英]Google signin not working on release version of android

I am getting problem for my current app. 我目前的应用程式出现问题。 My OAuth2.0 the SHA1 is correct and generated from keystore file of release version. 我的OAuth2.0 SHA1是正确的,并且是从发行版本的密钥库文件生成的。 My problem is I am receiving resultCode =0 everytime on onActivityResult. 我的问题是我每次在onActivityResult上都收到resultCode = 0。 I print out value of intent and got below: googleSignInStatus=Status{statusCode=INTERNAL_ERROR, resolution=null} But, if I run it on debug mode login working perfectly and for this case value of intent is: googleSignInAccount=com.google.android.gms.auth.api.signin.GoogleSignInAccount@31976389] 我打印出intent的值,并得到以下信息:googleSignInStatus = Status {statusCode = INTERNAL_ERROR,resolution = null}但是,如果我在调试模式下运行登录,则登录效果很好,在这种情况下,intent的值为:googleSignInAccount = com.google.android .gms.auth.api.signin.GoogleSignInAccount @ 31976389]

Do anybody knows how to solve this problem. 有谁知道如何解决这个问题。 NOTE: Somewhere I found one post they recommend to put Email and Project name on OAuth Contest Screen; 注意:在我发现某处的某个地方,他们建议将电子邮件和项目名称放在OAuth竞赛屏幕上。 I already tried that and still not working. 我已经尝试过了,但仍然无法正常工作。

Obviously first check your release sha1 key is correct or not. 显然首先要检查您的发行版sha1键是否正确。 But issue here was different. 但是这里的问题是不同的。 I am using new google play services (iecompile 'com.google.android.gms:play-services:8.4.0'). 我正在使用新的Google Play服务(即,编译“ com.google.android.gms:play-services:8.4.0”)。 And issue could be solved by modifying GoogleSignInOption object. 通过修改GoogleSignInOption对象可以解决问题。 Instead of: 代替:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()  
       .requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
                    .build();

I use : 我用 :

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestScopes(new Scope(Scopes.PLUS_LOGIN))
                .requestScopes(new Scope(Scopes.PLUS_ME))
                .requestEmail()
                .build();

This solves error returning statusCode=INTERNAL_ERROR . 这解决了返回statusCode = INTERNAL_ERROR的错误。 Then this gso object could be used for creating GoogleApiClient as shown below: 然后,可以使用此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(); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM