我通过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();
}
}
答案 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();
}