gpt4 book ai didi

android - 我应该使用 GoogleAuthUtil.getToken(...) 吗?

转载 作者:太空狗 更新时间:2023-10-29 16:30:35 29 4
gpt4 key购买 nike

背景:

我需要在我的服务器后端进行身份验证,以便我知道客户端是真实的。在我的 Android 游戏中,我通过 GoogleApiClient 连接到 Games.API

我只想登录一次,我想通过 Games.API 登录,因为这给了我很多优势(Google Play 游戏排行榜、成就等)

我已经能够使用 GoogleAuthUtil.getToken(...) 获得授权 token ,我可以在登录 Games.API 后执行此操作,这似乎给我一个 token 。到目前为止还不错。

但是Google says this is not safe并说我应该 migrate to ID token flow反而。但是,据我了解,这种方法需要我使用

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);

这意味着为 Games.API 发起附加登录。此外,不可能将 addApi Games.API Auth.GOOGLE_SIGN_IN_API 都添加到同一个 GoogleApiClient !

好的,所以升级到最新的 google-play-services(至少 r29),使用它我可以使用 Games.APIGames.getGamesServerAuthCode(...) 为我的服务器获取授权 token 。但这有两个问题:(1) 它需要 Android 6.0 或更高版本,这会阻挡 80% 的市场,以及 (2) 它已被弃用!


问题:

我是否应该使用 GoogleAuthUtil.getToken(...),如果不是,我有什么选择,因为我只想使用 Games.API 登录?

登录是指向用户展示登录视觉效果。我不介意登录其他东西,只要用户不必与登录交互...


注意:

我最初问this question当我刚开始的时候。当前的问题有望澄清情况。

最佳答案

首先,我应该使用GoogleAuthUtil.getToken(...)。它已被弃用;结束。

为了实现我想要的效果,我发现以下方法非常有效......我不知道这是否是最好的方法。

首先,使用 Auth.GOOGLE_SIGN_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();

如果成功,这最终将调用 onConnected(...),您可以从那里协商第二次登录 Games.API。这必须在新的 GoogleApiClient 上单独执行,因为您不能混合使用 Games.APIAuth.GOOGLE_SIGN_IN:

mGoogleApiClientForGames = new GoogleApiClient.Builder(mActivity, this, this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER)
.build();

mGoogleApiClientForGames.connect();

根据新的 Play Games Permissions 2016 年更新后,GoogleSignIn 每个游戏只出现一次(即使在设备之间!),之后用户不会看到任何 GoogleSignIn 的可视登录屏幕。唯一的可视登录将是保存的游戏快照选择屏幕。

这适用于 Android 2.3(使用 google-play-services r28 )并且没有弃用警告。万岁!

关于android - 我应该使用 GoogleAuthUtil.getToken(...) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069681/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com