适用于 Android 的 Google API 缺少 Games.getGamesAuthToken
Posted
技术标签:
【中文标题】适用于 Android 的 Google API 缺少 Games.getGamesAuthToken【英文标题】:Google APIs for Android is missing Games.getGamesAuthToken 【发布时间】:2016-07-18 08:31:14 【问题描述】:Google APIs for android 的在线 reference 显示了 Games 类的公共方法摘要,其中包括:
static PendingResult<Games.GetTokenResult> getGamesAuthToken(GoogleApiClient apiClient)
但可用的最新版本 (8.4.0) 不包含此方法。我用它来获取 API:
dependencies
compile 'com.google.android.gms:play-services:8.4.0'
Games.getGamesAuthToken 在哪里?
【问题讨论】:
【参考方案1】:这实际上是一个文档问题。 getGamesAuthToken() 已被删除,因为它没有达到应有的安全性。
供参考,可以阅读http://android-developers.blogspot.com/2016/01/play-games-permissions-are-changing-in.html
处理此问题的最佳方法是:
播放器在设备上通过身份验证后:
-
获取验证码以发送到您的后端服务器:
GetServerAuthCodeResult result =
Games.getGamesServerAuthCode(gac, clientId).await();
if (result.isSuccess())
String authCode = result.getCode();
// Send code to server.
在服务器上,将收到的身份验证码交换为令牌
向https://www.googleapis.com/oauth2/v4/token
发起 RPC 以将身份验证代码交换为访问令牌。
您必须提供服务器客户端 ID、服务器客户端密码(在创建服务器客户端 ID 时在开发者控制台中列出)和身份验证代码。
在此处查看更多详细信息:https://developers.google.com/identity/protocols/OAuth2WebServer?utm_campaign=play games_discussion_permissions_012316&utm_source=anddev&utm_medium=blog#handlingresponse。
获得访问令牌后,将使用以下方法检索玩家 ID:
www.googleapis.com/games/v1/applications/<app_id>/verify/
使用访问令牌。
在标头中传递身份验证令牌,如下所示:
“授权:OAuth”
响应值将包含用户的玩家 ID。这是供该用户使用的正确玩家 ID。 此访问令牌可用于根据需要进行额外的服务器到服务器调用。
【讨论】:
谢谢@Clayton。我看到的问题是 .getGamesServerAuthCode 也显示为已弃用,这意味着谷歌似乎根本没有提供任何可接受的解决方案。想法? 据我所知,在新的权限模型完全推出之前,它已被弃用——这应该在接下来的几周(左右)内完成。之后它将是一个普通的 API。 我注意到它仍然被弃用。有什么消息吗? @ClaytonWilkinson 你能告诉我们现在正确的方法是什么吗?我们看到列出的两种方法,一种显示为已弃用,另一种需要不同的登录过程 (GetServerAuthCode),这可能需要对代码进行重大更改。 @ClaytonWilkinson 您描述的步骤不起作用 - 是否有任何实际的解决方案来使用 Google Play Games 登录 + 服务器身份验证?我不想实现标准登录。以上是关于适用于 Android 的 Google API 缺少 Games.getGamesAuthToken的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Android 的 Google API 缺少 Games.getGamesAuthToken
适用于 Android 的 Google Places API:地图立即消失
适用于 Android 的 Google Books API - 未配置访问权限
是否有任何已发布的实施适用于 Android 的 Google Latitude API 的示例? [关闭]