GoogleApiClient连接始终首次失败但第二次成功

时间:2015-01-14 19:55:45

标签: android google-api-client

我通过GoogleApiClient为应用设置了google plus登录。

每当首次安装该应用并尝试通过GoogleApiClient建立连接时,该应用永远不会成功,并始终以onConnectionFailed结尾,result包含:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{4130e760: android.os.BinderProxy@4130e700}}

但是当第二次登录时,它被称为成功并且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();
    }

}

2 个答案:

答案 0 :(得分:2)

正如官方文档所说here

  

如果您使用GoogleApiClient连接到需要身份验证的API(例如Google云端硬盘或Google Play游戏),您的第一次连接尝试将很有可能失败,您的应用将会收到onConnectionFailed()的调用SIGN_IN_REQUIRED错误,因为未指定用户帐户。

答案 1 :(得分:0)

我遇到同样的问题,打电话给' connect()'再一次,这次是关于' onConnected'方法修好了。奇怪。

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