谷歌登录自动失败

时间:2016-02-26 00:37:21

标签: java android google-signin googlesigninapi

我有3个设备可供测试。 Moto G 1st gen(4.4.4),Moto G 2nd gen(5.0.1),Nexus 5(6.0.1)。他们都在同一个wifi网络上。以下代码在Moto G 1st gen上完美运行,但在其他两个代码上自动失败。即使使用不同的帐户。

我也在运行android 6.0同样问题的模拟器中对此进行了测试。请帮忙。

日志:

Array#to_h

这是我的代码:

MainActivity.java - onCreate

D/Google Account: handleSignInResult: false

onStart,onStop,signIn,signOut(按下按钮调用)

gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();
GAPIclient = new GoogleApiClient.Builder(this)
    .enableAutoManage(this,this)
     .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
     .build();
signInIntent = Auth.GoogleSignInApi.getSignInIntent(GAPIclient);
if (logged_in){
   GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(signInIntent);
    if (result != null){
         acct = result.getSignInAccount();
    }
}

onActivityResult

@Override
    protected void onStart(){
        super.onStart();
       GAPIclient.connect();
}
@Override
protected void onStop() {
    super.onStop();
    if (GAPIclient.isConnected()) {
        GAPIclient.disconnect();
    }
}
public void signIn(){
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(GAPIclient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}
public void signOut(){
Auth.GoogleSignInApi.signOut(GAPIclient).setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(Status status) {
        }
    });
    logged_in = false;
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("logged_in", false);
    editor.commit();
    accountFragment.makeSignIn();
}`

处理登录结果

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleSignInResult(result);
    }
}

更新

在我尝试向凭证添加第二个SHA1密钥后,现在在moto g上的结果相同。

1 个答案:

答案 0 :(得分:1)

您必须将调试和发布SHA1密钥都放在Google凭据页面中。

原因:由于某种原因,在调试模式下它发送的密钥不一致。它显然是基于设备的。哦,妈妈谷歌......