Google+分享停止工作

时间:2013-05-28 09:51:01

标签: android google-plus

我有一个Android应用程序,我正在按照these指令实现共享。

我设法让它运转起来。我第二天回来了,我在logcat中得到了这个输出:

 G+ on connection failed ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{422d8470: android.os.BinderProxy@422d8410}}

我已经检查了api控制台,删除了我的OAuth clientID并重新输入了新的内容。这还没有解决它。我有什么想法可以解决它吗?

1 个答案:

答案 0 :(得分:10)

您可以出于多种原因获得SIGN_IN_REQUIRED连接结果,例如:

  • 如果您致电PlusClient.clearDefaultAccount();
  • 如果您在http://plus.google.com/apps上或通过致电PlusClient.revokeAccessAndDisconnect();来断开该应用。
  • 如果您的应用请求授权范围以及之前请求的范围。

对于SIGN_IN_REQUIRED,您收到的ConnectionResult包含PendingIntent,可用于解决问题。在the instructions you're following的示例中,示例代码使用以下代码处理onConnectionFailed中的错误:

@Override
public void onConnectionFailed(ConnectionResult result) {
    if (result.hasResolution()) {
        try {
            result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
        } catch (SendIntentException e) {
            mPlusClient.connect();
        }
    }
    // Save the result and resolve the connection failure upon a user click.
    mConnectionResult = result;
}

result.startResolutionForResult()将显示帐户选择器或权限对话框以解决上述问题,并将控制权返回给onActivityResult,例如:

@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
    if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
        mConnectionResult = null;
        mPlusClient.connect();
    }
}

此时,对PlusClient.connect()的调用应该会成功。