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 【问题描述】:

我正在尝试将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 如果您认为这是一个好主意,请给它一个星;)跨度> 【参考方案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 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

时光不老我们不散啥意思 怎么理解时光不老我们不散的意思

时光不老我们不散这句话是啥意思 时光不老我们不散这句话解释

C语言 不允许使用不完整的类型

时光不老,我们不散的下一句是啥?

C语言 不允许使用不完整的类型

时光不老,我们不散珍惜友情的说说