2016-02-26 95 views
1

我有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的模擬器中測試過這個問題。請幫忙。

登錄:

D/Google Account: handleSignInResult: false 

這裏是我的代碼:

MainActivity.java - 的onCreate

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(); 
    } 
} 

在onStart,的onStop,簽到,signOut(通過按下按鈕調用)

@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(); 
}` 

onAct ivityResult

@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); 
    } 
} 

手柄登入導致

private void handleSignInResult(GoogleSignInResult result) { 
    if (result.isSuccess()){ 
     ... 

UPDATE

同樣的結果現在Moto G機種後,我試圖第二SHA1鍵添加到憑據。

+0

請格式化代碼。這是很多代碼,請寫一個縮小版本的問題。 – Tdorno

+0

完成。我希望這是好的 –

+0

@ Cyber​​Geek.exe我有同樣的問題。你已經知道答案了嗎? –

回答

1

您必須將調試和發佈SHA1密鑰都放入Google憑證頁面。

原因:出於某種原因,它在調試模式下發送的密鑰不一致。它顯然是基於設備的。哦,媽媽Google ...