- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
背景:
我需要在我的服务器后端进行身份验证,以便我知道客户端是真实的。在我的 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.API
和 Games.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.API
和 Auth.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/
我在我的 Android 应用程序中使用 Google Play 服务的授权和 GoogleAuthUtil。大约 2 个月前我做了这部分,从那以后它一直工作得很好。昨天,我更新了SDK。现在我在我的
我正在使用 google play 服务身份验证示例 here 如何重置 GoogleAuthUtil 以便它再次请求许可? 它通过抛出提供给对话框的 userRecoverableException
有时我可以在崩溃报告服务日志中找到如下所示 Caused by: java.lang.VerifyError: com/google/android/gms/auth/GoogleAuthUtil
在我的 Android 应用程序中,我试图获取 Google token 以连接到 Google 电子表格。这是执行此操作的代码: AsyncTask getTokenTask = new Async
我正在使用 Android Studio。 我需要使用 Google 帐户,但出现错误。 Cannot resolve symbol 'GoogleAuthUtil' 我已经导入了四个主要导入项。 i
GoogleAuthUtil.getToken 的第二个参数需要一个帐户对象,但是当您连接到 Google SignIn 时,您返回的结果是 GoogleSignInAccount - 这不是一回事。
尝试调用 GoogleAuthUtil.getToken(args) 时,我在具有最新 Google Play 服务的 ICS 设备上遇到此故障。通过在手机中删除和添加 Google 帐户解决了该问题
我正在使用 OAuth2 进行自动登录。但我不知道 getToken() 方法中的范围参数是什么,请帮助我。 最佳答案 OAuth2 authorization uses access token t
我有一个应用程序,我试图在其中获取谷歌身份验证 token 。它会在每次请求时超时,并且不会在 logcat 中提供任何有用的消息。我试图弄清楚我是否未能正确设置我的云控制台,或者我的代码是否有问题。
根据 https://gist.github.com/ianbarber/5170508您应该与 PlusClient 连接,然后才使用 GoogleAuthUtil 获取 token 。 但在我的应
我使用以下内容来获得可以从 Android 应用访问后端的身份验证。这在此处进行了描述 https://developers.google.com/identity/protocols/CrossCl
我使用了 GoogleApiClient 对象,继承了 ConnectionCallbacks 接口(interface)并调用了 GoogleAuthUtil.getToken(Context co
因此,我正在构建一个 Android 模块,它将作为 Gradle 依赖项(或 AAR 包)提供给 Android 应用程序。例如。就像 Mixpanel 一样,Google Analytics 提供
我目前正在构建一个 Android 应用程序,它从我的后端服务器请求数据。当然,我想知道在我的服务器上收到的请求是否真的来 self 的应用程序,或者是否有人只是从另一台服务器发送 HTTP 请求等。
我在 Android 上的 Google Play 服务 中使用 GoogleAuthUtil。调用 GoogleAuthUtil.getToken(context, userName, scope)
背景: 我需要在我的服务器后端进行身份验证,以便我知道客户端是真实的。在我的 Android 游戏中,我通过 GoogleApiClient 连接到 Games.API。 我只想登录一次,我想通过 G
我有一个调用 GoogleAuthUtl.getTokenWithNotification 的后台服务它可以正常工作,但我正在尝试实现此函数的回调部分,但无法正常工作。 我已经实现了一个广播接收器并将
我正在尝试使用 GoogleAuthUtil.getToken 生成可用于登录其他服务的 token 。当我尝试使用此方法时,我的应用程序“挂起”并停止响应。最终我的手机吐出了一些 IO 错误消息。我
我的目标是使用 Google plus sdk 登录到 BaaS,BaaS 需要通过 googleSignInAccount.getIdToken() 获取的 tokenId 和 accessToke
我正在实现谷歌标志,但我来到了这个方法,这个方法已被弃用,表明它总是返回空值 String token = GoogleAuthUtil.getToken(loginActivity, accoun
我是一名优秀的程序员,十分优秀!