【问题标题】:Auth.GOOGLE_SIGN_IN_API cannot be used with Games.APIAuth.GOOGLE_SIGN_IN_API 不能与 Games.API 一起使用
【发布时间】:2016-09-16 00:10:52
【问题描述】:

我正在尝试将GoogleApiClientGames.APIAuth.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.APIAuth.GOOGLE_SIGN_IN_API 一起使用?
我必须连接Games.API 并获取用户个人资料信息?

【问题讨论】:

  • 你引用了this
  • @ShreeKrishna 这是同样的问题,但我没有找到正确的答案...
  • 我在 android 问题跟踪器上创建了一个问题,建议将新的 Google 登录流程与游戏 API 集成:code.google.com/p/android/issues/detail?id=225329 如果您认为这是一个好主意,请给它一个星;)跨度>

标签: android google-play-games google-api-client google-signin


【解决方案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+)上的用户数据。
猜你喜欢
  • 2018-02-02
  • 1970-01-01
  • 2017-01-09
  • 2017-04-14
  • 2016-04-19
  • 1970-01-01
  • 2011-01-19
  • 2015-10-01
  • 2012-06-09
相关资源
最近更新 更多