这是“这可能吗?”题。我有一个Android手机的应用程序和appengine平台的另一个应用程序。引人注目的事情实际上只是一个高分数的分数,手机应用程序真的只是一个游戏。我可以使用一些json / gson / httppost的东西,将游戏中的分数发送到数据库。现在我想确保我收集的分数来自游戏,而不是某些人,可能在编程方面很有天赋,但手上有太多时间。
这是问题所在。我可以使用谷歌OAuth 2.0以某种方式验证我得到的分数来自运行我的游戏的手机吗?
我以为我会这样做:我会使用OAuth从谷歌(从手机)获取某种令牌,然后将该令牌传递给appengine数据库(使用json记录),然后使用令牌从谷歌获取用户的信息。这可以像电子邮件地址一样简单。然后我会对自己说“好吧,只要我收到用户的电子邮件地址,我知道用户正在使用该游戏,我可以存储他们的分数。”听起来有可能吗?我觉得一旦我使用手机从谷歌获取令牌,它就无法通过appengine程序使用。
我在想我会使用与appengine db相关联的client_id和client_secret(以及我需要的任何其他内容)从手机获取令牌,然后当我通过json将令牌发送到附加程序时得到电子邮件地址,他们从appengine工作。这似乎是某种方式,谷歌OAuth会知道我试图从手机获取令牌,然后将拒绝整个事情。那么也许它会起作用。他们说虽然Android手机无法保密(指的是client_secret)。
最后,我想知道是否还有其他更简单的方法可以确保我在录音室录制的乐谱真的来自运行我游戏的Android手机?我可以设置自己的身份验证方案吗?这有多难?
答案 0 :(得分:2)
好时机;谷歌刚刚发布的一项功能将解决您的问题: http://android-developers.blogspot.ca/2013/01/verifying-back-end-calls-from-android.html
这样做是一个多步骤的过程,我将完整概述,但是 这是简短版本:您使用的是GoogleAuthUtil类 通过Google Play服务,检索名为“ID”的字符串 令牌”。您将令牌发送到后端,后端可以使用 它能够快速而廉价地验证发送给它的用户以及使用者 应用程序。
答案 1 :(得分:-1)
使用OAuth 2.0(开放ID连接),您可以识别正在使用游戏的用户。您似乎想要验证 app 。有多种方法可以做到这一点,但您仍然需要在应用程序中嵌入凭据或创建某种注册机制。通常,只要您的攻击者(技术熟练的用户)具有对应用程序代码和设备(root等)的完全访问权限,您就无法做到。唯一的问题是你想要做多难。
或者您可以使用第三方服务,例如Parse,并相信他们会花一些时间来完善他们的应用认证机制。