当前位置:  开发笔记 > Android > 正文

GoogleApiClient具有可选的Plus.API,并且未与Play服务8.3中引入的新Google标志连接到Plus

如何解决《GoogleApiClient具有可选的Plus.API,并且未与Play服务8.3中引入的新Google标志连接到Plus》经验,为你挑选了1个好方法。

当我尝试使用Plus'Heople Api来访问用户的基本个人资料信息时,我收到很多关于我的应用程序崩溃的报告.

这是我的GoogleApiClient设置

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()
                    .requestScopes(new Scope(Scopes.PROFILE))
                    .requestScopes(new Scope(Scopes.PLUS_LOGIN))
                    .requestIdToken()
                    .requestProfile()
                    .build();

mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                    .addApi(Plus.API)
                    .addConnectionCallbacks(this)
                    .build();

在此行上获取IllegalStateException:

Person person = Plus.PeopleApi.getCurrentPerson(mGoogleApiClientPlus)

java.lang.IllegalStateException:GoogleApiClient具有可选的Plus.API,并且未连接到Plus.使用GoogleApiClient.hasConnectedApi(Plus.API)来保护此通话.

此代码仅在google登录后使用已登录用户返回时调用.那么为什么不能连接api?



1> Philip Herbe..:
protected synchronized void buildGoogleApiClient() {
    // Configure sign-in to request the user's ID, email address, and basic profile.
    // ID and basic profile are included in DEFAULT_SIGN_IN.
    gGoogleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestScopes(new Scope(Scopes.PROFILE))
            .requestScopes(new Scope(Scopes.PLUS_LOGIN))
            .requestProfile()
            .requestEmail()
            .build();

    // Build a GoogleApiClient with access to the Google Sign-In API
    // and the options specified by gGoogleSignInOptions.
    gGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, mGoogleSignInOptions)
            .addApi(Plus.API)
            .build();
}


@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        if (resultCode == Activity.RESULT_OK) {
            // Google+
            if (gGoogleApiClient.hasConnectedApi(Plus.API))
                Person person = Plus.PeopleApi.getCurrentPerson(gGoogleApiClient);
            else
                Log.e("TAG", "Google+ not connected");

            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        } else 
            Log.e("TAG", "Result Cancelled");
    }
}

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有