Android 我是否应该使用GoogleAuthUtil.getToken(…)呢?
背景: 我需要在我的服务器后端进行身份验证,以便我知道客户端是真实的。在我的Android游戏中,我通过Android 我是否应该使用GoogleAuthUtil.getToken(…)呢?,android,web-services,authorization,google-play-services,Android,Web Services,Authorization,Google Play Services,背景: 我需要在我的服务器后端进行身份验证,以便我知道客户端是真实的。在我的Android游戏中,我通过GoogleAppClient连接到Games.API 我只想登录一次,我想通过Games.API登录,因为这给了我很多优势(谷歌游戏排行榜、成就等) 我已经能够使用GoogleAuthUtil.getToken(…)获得授权令牌,我可以在登录Games.API后这样做,这似乎给了我一个令牌。到目前为止还不错 但是他说我应该这样做。但是,据我所知,这种方法需要我使用 Intent signIn
GoogleAppClient
连接到Games.API
我只想登录一次,我想通过Games.API
登录,因为这给了我很多优势(谷歌游戏排行榜、成就等)
我已经能够使用GoogleAuthUtil.getToken(…)
获得授权令牌,我可以在登录Games.API
后这样做,这似乎给了我一个令牌。到目前为止还不错
但是他说我应该这样做。但是,据我所知,这种方法需要我使用
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
这意味着在Games.API上增加一个登录。此外,不可能将添加API
和两个游戏API
和对同一GoogleAppClient
进行谷歌登录API的身份验证
好的,升级到最新的google play服务(至少r29),使用它我可以使用Games.API
和Games.getGamesServerAuthCode(…)
为我的服务器获取身份验证令牌。但这有两个问题:(1)它需要Android 6.0或更高版本,这将占据80%的市场份额;(2)它已被弃用强>
问题:
我是否应该使用GoogleAuthUtil.getToken(…)
,如果不使用,我的选项是什么,因为我只想使用Games.API
登录
通过登录,我的意思是向用户展示登录视频。我不介意登录到其他东西,只要用户不必与登录交互
注意:
我最初问我是什么时候开始的。当前的问题有望澄清这一情况。首先,我应该不要使用GoogleAuthUtil.getToken(…)
。它被弃用了;结束
为了达到我想要的,我发现以下方法非常有效。。。我不知道这是否是最好的方法
首先,使用Auth.GOOGLE\u sign\u登录
:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(
GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("YOUR-SERVER-CLIENT-ID")
.build();
mGoogleApiClientForSignIn = new GoogleApiClient.Builder(mActivity, this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
mGoogleApiClientForSignIn.connect();
mGoogleApiClientForGames = new GoogleApiClient.Builder(mActivity, this, this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER)
.build();
mGoogleApiClientForGames.connect();
成功后,最终将调用onConnected(…)
,您可以在此处协商第二次登录Games.API。这必须在新的GoogleAppClient
上单独执行,因为您不能混合使用Games.API
和Auth.GOOGLE\u SIGN\u IN
:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(
GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("YOUR-SERVER-CLIENT-ID")
.build();
mGoogleApiClientForSignIn = new GoogleApiClient.Builder(mActivity, this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
mGoogleApiClientForSignIn.connect();
mGoogleApiClientForGames = new GoogleApiClient.Builder(mActivity, this, this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER)
.build();
mGoogleApiClientForGames.connect();
根据2016年的最新更新,GoogleSignIn
仅在每场游戏中出现一次(甚至在设备之间!),之后用户将不会看到GoogleSignIn
的任何可视登录屏幕。唯一的可视登录将是保存的游戏快照选择屏幕
这适用于Android 2.3(使用google play服务),并且没有弃用警告。胡萨