Auth.GOOGLE_SIGN_IN_API不能与Games.API一起使用 [英] Auth.GOOGLE_SIGN_IN_API cannot be used with Games.API

查看:79
本文介绍了Auth.GOOGLE_SIGN_IN_API不能与Games.API一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将GoogleApiClientGames.APIAuth.GOOGLE_SIGN_IN_API连接(以获取用户配置文件信息).
出现此错误:

I'm trying to connect GoogleApiClient with Games.API and Auth.GOOGLE_SIGN_IN_API (for getting User Profile Information).
Getting this Error:

java.lang.IllegalStateException: Auth.GOOGLE_SIGN_IN_API cannot be used with Games.API


代码:


Code:

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并获取用户个人资料信息的什么方法?


Why I can't use Games.API with Auth.GOOGLE_SIGN_IN_API?
What alternative I have to connect Games.API and get User Profile Information?

推荐答案

由我自己解决.
如果已经连接Games.API,则无需添加Auth.GOOGLE_SIGN_IN_API即可获取用户个人资料信息.

Resolved by my self.
No need to add Auth.GOOGLE_SIGN_IN_API for getting User Profile Information if you already connected Games.API.

连接:

googleApiClient = new GoogleApiClient.Builder(activity)
                .addConnectionCallbacks(connectionCallbacks)
                .addOnConnectionFailedListener(onConnectionFailedListener)
                .addApi(Games.API).addScope(Games.SCOPE_GAMES)
                .build();


如果失败:


If failed:

@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;
    }
}


如果已连接:
获取用户个人资料信息:


If connected:
Get User Profile Information:

String name = Games.Players.getCurrentPlayer(googleApiClient).getDisplayName();
Uri photo = Games.Players.getCurrentPlayer(googleApiClient).getIconImageUri();
//and more...

这篇关于Auth.GOOGLE_SIGN_IN_API不能与Games.API一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆