我正在编写一款使用Google Play游戏服务的任务和事件系统的游戏 - https://developers.google.com/games/services/android/quests。
游戏将在Android设备上使用它,但我想从服务器提交某些事件。我找到了这个https://developers.google.com/games/services/web/api/events/record的网络休息api,但我不清楚如何继续授权。
我可以以某种方式将所有需要的身份验证信息从客户端发送到我的服务器,以便将来使用GPGS的rest api吗?
答案 0 :(得分:0)
您要做的是非正式地称为混合授权,最好的方法是从Android应用向您的网络服务器发送授权码。然后,Web服务器可以交换代码(一次)用于访问令牌和刷新令牌。这不是游戏特有的,许多使用Google登录的应用都会这样做。
Google+ Haiku+ Sample显示此流程的示例。您可能想要查看的具体内容(在Android应用中)为MainActivity.codeSignInRequired()
,MainActivity
中的私有类称为CheckOrRetrieveCodeTask
,HaikuSession.getCodeSynchronous()
调用GoogleAuthUtil.getToken()
获取一次性代码的方法。
请注意,获取此代码需要您的用户查看并接受标准的Google SignIn同意对话框。此外,一旦您使用该代码无效(出于安全原因),请确保您的服务器保存通过交换代码获得的代码。
Haiku+ Java Server有一个很好的例子,说明如何交换令牌的授权码。
获得访问令牌后,您可以调用用户在客户端同意的任何Google API。 Haiku + Java Server在获取用户圈时显示了这个例子。
是的,这是一个复杂的流程,但它是最好和最安全的方法。如果您不想完成所有这些操作,我建议您从客户端提交Events
。适用于Android的Google Play游戏SDK使这一过程非常简单并自动处理所有缓存和重试逻辑。