gpt4 book ai didi

android - GoogleApiClient 有一个可选的 Plus.API,并且没有连接到带有 Play Services 8.3 中引入的新 Google 标志的 Plus

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:56 24 4
gpt4 key购买 nike

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

这是我的 GoogleApiClient 设置

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(Scopes.PROFILE))
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.requestIdToken(<id_token>)
.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 登录返回登录用户后才会调用此代码。那为什么plus api连接不上呢?

最佳答案

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");
}
}

关于android - GoogleApiClient 有一个可选的 Plus.API,并且没有连接到带有 Play Services 8.3 中引入的新 Google 标志的 Plus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34353674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com