3

这是一个“这可能吗?” 问题。我有一个适用于 android 手机的应用程序和另一个适用于 appengine 平台的应用程序。appengine的东西真的只是一个高分的db,而手机应用程序真的只是一个游戏。我可以使用一些 json/gson/httppost 的东西,将分数从游戏发送到数据库。现在我想确保我收集到的分数来自游戏,而不是某个人,可能有编程天赋但手头有太多时间。

这是问题。我可以使用 google OAuth 2.0 以某种方式验证我获得的分数来自运行我的游戏的手机吗?

我想我会这样做:我会使用 OAuth 从谷歌(从手机)获取某种令牌,然后将该令牌传递给 appengine 数据库(使用 json 记录),然后使用该令牌从谷歌上的用户。这可以像电子邮件地址一样简单。然后我会对自己说“好吧,只要我得到用户的电子邮件地址,我就知道用户正在使用游戏,我可以存储他们的分数。” 这听起来可能吗?我感觉一旦我使用手机从谷歌获取令牌,appengine 程序就无法使用它。

我在想我会使用与appengine db关联的client_id和client_secret(以及我需要的任何其他东西)从手机中获取令牌,然后当我通过json将令牌发送到appenging程序以获取电子邮件时地址,他们会从 appengine 工作。这似乎谷歌 OAuth 会以某种方式知道我试图从手机中获取令牌,然后会拒绝整个事情。再说一次,也许它会起作用。他们说虽然安卓手机不能保密(指的是client_secret)。

最后我想知道是否有任何其他更简单的方法来确保我在 appengine 端记录的分数真的来自运行我的游戏的安卓手机?我可以设置自己的身份验证方案吗?这有多难做到?

4

2 回答 2

2

好时机; Google 刚刚发布的一项功能将解决您的问题: http ://android-developers.blogspot.ca/2013/01/verifying-back-end-calls-from-android.html

这样做是一个多步骤的过程,我将对其进行完整概述,但这里有一个简短的版本:您使用可通过 Google Play 服务获得的 GoogleAuthUtil 类来检索称为“ID 令牌”的字符串。您将令牌发送到您的后端,您的后端可以使用它来快速、廉价地验证哪个应用程序发送了它以及谁在使用该应用程序。

于 2013-01-08T17:39:34.583 回答
-1

使用 OAuth 2.0(Open ID 连接),您可以识别正在使用您的游戏的用户。不过,您似乎想对应用程序进行身份验证。有多种方法可以做到这一点,但您仍然必须在应用程序中嵌入凭据或创建某种注册机制。通常,只要您的攻击者(熟练的用户)拥有对应用程序代码和设备(root 等)的完全访问权限,您就无能为力了。唯一的问题是你想让谁努力。

或者,您可以使用Parse等第三方服务,并相信他们会花一些时间完善他们的应用程序身份验证机制。

于 2013-01-08T06:10:02.977 回答