2015-01-14 136 views
7

我有一個谷歌加登錄通過GoogleApiClient設置爲應用程序。GoogleApiClient連接第一次總是失敗,但第二次獲得成功

只要安裝該應用程序第一次嘗試,使通過GoogleApiClient方面,它永遠不會成功,並且總是在onConnectionFailed結束了result包含:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{4130e760: [email protected]}} 

但是當第二次登錄其稱之爲獲得成功onConnected命中。爲什麼有可能在第一次嘗試中取得成功?

我的Builder參數有什麼問題嗎?

public void connectGoogleApi() { 
    mGoogleApiClient = new GoogleApiClient.Builder(mainAppContext).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN).build(); 
    mGoogleApiClient.connect(); 
} 

public void onConnectionFailed(ConnectionResult result) { 
    if (!result.hasResolution()) { 
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); 
     return; 
    } 

    if (!mIntentInProgress) { 
     // Store the ConnectionResult for later usage 
     mConnectionResult = result; 
     resolveSignInError(); 
    } 

} 
+0

是不是很明顯的錯誤,用戶需要允許您的應用程序進行身份驗證 – tyczj

+0

沒有對話框出現,以及如何在沒有用戶做任何事情時獲得成功? – Maven

回答

0

我有同樣的問題,稱「接()」,這一次裏面「onConnected」的方法固定它。奇怪。

@Override 
    public void onConnected(final Bundle arg0) { 
    Logger.log("On connected"); 
    DevicePreferences.getGoogleApiClient().connect(); 
} 
2

官方文檔說here

如果使用GoogleApiClient連接到需要身份驗證,如谷歌驅動器或谷歌玩遊戲的API,有一個很好的機會,你的第一個連接嘗試將失敗並且您的應用將因SIGN_IN_REQUIRED錯誤接收到對onConnectionFailed()的調用,因爲未指定用戶帳戶。

+0

很高興知道。這幫了我很多! –

相關問題