在Android中使用Google Plus登录时获取异常

时间:2015-11-27 15:35:33

标签: android google-plus google-login

我正尝试在Android中使用Google Plus登录。当我按下Google Plus按钮时,它会给我一个需要选择的配置文件。选择google plus帐户后,会调用onConnected()方法。然后我正在尝试获取用户数据。但我得到例外说法

Error requesting visible circles: Status{statusCode=NETWORK_ERROR, resolution=null}

这是我写的完整代码:

     public class LoginActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, ResultCallback<People.LoadPeopleResult> 
 {

    private GoogleApiClient mGoogleApiClient;

    private ConnectionResult mConnectionResult;

    private boolean mIntentInProgress;

    private boolean mSignInClicked;

    private static final int REQUEST_RESOLVE_ERROR = 1001;

     @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login);

        mBtnGPlus = (SignInButton)findViewById(R.id.btn_sign_in);
        mBtnGPlus.setOnClickListener(this);
        mBtnGPlus.setSize(SignInButton.SIZE_STANDARD);

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API, Plus.PlusOptions.builder().build())
                .addScope(Plus.SCOPE_PLUS_PROFILE)
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build();

    }

     protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }


    @Override
    public void onClick(View v)
    {
        if(v == mBtnGPlus)
        {
            onGPlusLogin();
        }
    }


    private void onGPlusLogin()
    {
        Logger.d("button clicked");
        if (!mGoogleApiClient.isConnecting()) {
            mSignInClicked = true;
            Logger.d("connecting gplus");
            resolveSignInError();
        }
    }

     private void resolveSignInError() {
        Logger.d("resolveSignInError");
        if (mConnectionResult.hasResolution())
        {
            Logger.d("inside hasResolution");
            try {
                mIntentInProgress = true;
                mConnectionResult.startResolutionForResult(this, RC_SIGN_IN);
            } catch (IntentSender.SendIntentException e)
            {
                Logger.d("exception came  "+e.getMessage());
                mIntentInProgress = false;
                mGoogleApiClient.connect();
            }
        }
    }

    @Override
    public void onResult(People.LoadPeopleResult peopleData) {

        Logger.d("status code onResult " +peopleData.getStatus().getStatusCode());
        if (peopleData.getStatus().getStatusCode() == CommonStatusCodes.SUCCESS) {
            PersonBuffer personBuffer = peopleData.getPersonBuffer();
            try {
                int count = personBuffer.getCount();
                for (int i = 0; i < count; i++) {
                    Logger.d("Display name: " + personBuffer.get(i).getDisplayName());
                }
            } finally {
                personBuffer.release();
            }
        } else {
            Logger.d("Error requesting visible circles: " + peopleData.getStatus());
        }
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
       if (!mIntentInProgress) {
            // Store the ConnectionResult for later usage
            mConnectionResult = result;
            if (mSignInClicked) {
                // The user has already clicked 'sign-in' so we attempt to
                // resolve all
                // errors until the user is signed in, or they cancel.
                resolveSignInError();
            }
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Logger.d("OnActivity result::::   " + resultCode);
        if (requestCode == RC_SIGN_IN)
        {
            Logger.d("OnActivity result 5555::::   " + resultCode);
            if (resultCode != RESULT_OK)
            {
                Logger.d("OnActivity result 666666   " + resultCode);
                mSignInClicked = false;
            }

            mIntentInProgress = false;

            if (!mGoogleApiClient.isConnecting()) {
                Logger.d("OnActivity result::: 777777   " + resultCode);
                mGoogleApiClient.connect();
            }
        }
    }

    @Override
    public void onConnectionSuspended(int arg0) {
        Logger.d("onConnectionSuspended::::   ");
        mGoogleApiClient.connect();
    }


    @Override
    public void onConnected(Bundle arg0) {
        mSignInClicked = false;
        Logger.d("OnConnected::::   ");
        Plus.PeopleApi.loadVisible(mGoogleApiClient, null)
                .setResultCallback(this);
        Logger.d("OnConnected::::   "+(Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) == null));
        if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
            Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
            String personName = currentPerson.getDisplayName();
            String personGooglePlusProfile = currentPerson.getUrl();
        }


        }

这是与之相关的清单文件:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.intent.action.CALL_PRIVILEGED" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />

<application
        android:name=".util.DBOpenHelper"
        android:allowBackup="true"
        android:icon="@drawable/dicon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name=".ui.Splashscreen"
            android:theme="@style/AppTheme.Dark" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.LoginActivity"
            android:theme="@style/AppTheme.Dark" >
        </activity>
        <activity
            android:name=".ui.RegistrationActivity"
            android:label="@string/title_activity_registration"
            android:theme="@style/AppTheme.Dark" >
        </activity>
        <activity
            android:name=".ui.HomeScreen"
            android:label="@string/title_activity_home_screen"
            android:theme="@style/AppTheme.Inside" >
        </activity>
        </activity>
    </application>

我在错误日志中遇到此错误:

12-10 21:12:39.764 2035-2138/? E/MDM: [151] b.run: Couldn't connect to Google API client: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null, message=null}
12-10 21:12:49.736 18914-18948/? E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaec2e550
12-10 21:12:50.911 18724-18724/? E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
12-10 21:12:50.911 18724-18724/? E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
12-10 21:12:51.988 1387-3249/? E/Volley: [130] BasicNetwork.performRequest: Unexpected response code 401 for https://www.googleapis.com/plus/v1/people/me/people/visible?maxResults=100&orderBy=alphabetical
12-10 21:12:53.036 1387-3247/? E/Volley: [128] BasicNetwork.performRequest: Unexpected response code 401 for https://www.googleapis.com/plus/v1/people/me/people/visible?maxResults=100&orderBy=alphabetical

有人可以帮我吗?

-Arindam。

0 个答案:

没有答案