Auth.GOOGLE_SIGN_IN_API 不能与 Games.API 一起使用
Posted
技术标签:
【中文标题】Auth.GOOGLE_SIGN_IN_API 不能与 Games.API 一起使用【英文标题】:Auth.GOOGLE_SIGN_IN_API cannot be used with Games.API 【发布时间】:2016-09-16 00:10:52 【问题描述】:我正在尝试将GoogleApiClient
与Games.API
和Auth.GOOGLE_SIGN_IN_API
连接(用于获取用户个人资料信息)。
收到此错误:
java.lang.IllegalStateException: Auth.GOOGLE_SIGN_IN_API cannot be used with Games.API
代码:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestProfile()
.build();
googleApiClient = new GoogleApiClient.Builder(activity)
.addConnectionCallbacks(connectionCallbacks)
.addOnConnectionFailedListener(onConnectionFailedListener)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
为什么我不能将Games.API
与Auth.GOOGLE_SIGN_IN_API
一起使用?
我必须连接Games.API
并获取用户个人资料信息?
【问题讨论】:
你引用了this。 @ShreeKrishna 这是同样的问题,但我没有找到正确的答案... 我在 android 问题跟踪器上创建了一个问题,建议将新的 Google 登录流程与游戏 API 集成:code.google.com/p/android/issues/detail?id=225329 如果您认为这是一个好主意,请给它一个星;)跨度> 【参考方案1】:由我自己解决。
如果您已连接Games.API
,则无需添加Auth.GOOGLE_SIGN_IN_API
以获取用户配置文件信息。
连接:
googleApiClient = new GoogleApiClient.Builder(activity)
.addConnectionCallbacks(connectionCallbacks)
.addOnConnectionFailedListener(onConnectionFailedListener)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
如果失败:
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult)
if (connectionResult.hasResolution())
try
connectionResult.startResolutionForResult(this, REQUEST_RESOLVE_ERR);
catch (IntentSender.SendIntentException e)
googleApiClient.connect();
e.printStackTrace();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode)
case REQUEST_RESOLVE_ERR:
if (resultCode == RESULT_OK)
if (!googleApiClient.isConnecting()
&& !googleApiClient.isConnected())
googleApiClient.connect();
break;
如果已连接: 获取用户资料信息:
String name = Games.Players.getCurrentPlayer(googleApiClient).getDisplayName();
Uri photo = Games.Players.getCurrentPlayer(googleApiClient).getIconImageUri();
//and more...
【讨论】:
但没有Auth.GOOGLE_SIGN_IN_API
我无法获得授权令牌。有可能吗?
@Alexmelyon 我想没有。此示例仅用于获取 Google 游戏(而非 Google+)上的用户数据。以上是关于Auth.GOOGLE_SIGN_IN_API 不能与 Games.API 一起使用的主要内容,如果未能解决你的问题,请参考以下文章