我有一个android应用,正在按照these的说明实现共享。

我设法使它工作。第二天我回到了它,并在logcat中得到了以下输出:

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

我对API控制台进行了三重检查,删除了我的OAuth clientID,然后再次输入新的内容。这还没有解决。关于我可以研究解决问题的任何想法吗?

最佳答案

出于多种原因,您可以获得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()的调用应该会成功。

    10-06 14:40