首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这个简单的安卓应用案例中,我需要从OAuth 2.0中得到什么?

在这个简单的安卓应用案例中,我需要从OAuth 2.0中得到什么?
EN

Stack Overflow用户
提问于 2012-09-11 16:13:53
回答 1查看 623关注 0票数 3

的故事:我正在制作一个安卓应用程序,允许用户购买订阅,而不要求用户有一个帐户或登录。我想检查用户是否购买了订阅和Google Android Developer API似乎提供了这项服务。

问题(TL;DR):应该使用OAuth作为"web应用程序“、”已安装的应用程序“、”服务应用程序“,还是不使用上述任何一种?

的问题:开始做这个,我被告知:

对Google的访问是使用OAuth 2.0WebServer流进行身份验证的。在使用该API之前,您需要设置一个API控制台项目,创建一个客户机ID并生成一个刷新令牌。-source

当然可以。然后,有一些设置说明继续说:

在第二个页面上,选择web应用程序并设置重定向URI和Javascript源。

我的应用程序确实可以访问互联网,但它是一个已安装的Android应用程序,而不是一个web应用程序,所以我没有一个“重定向URI”或"Javascript源“来链接它。此外,这将需要用户登录,我不想这样做,在我的情况下也是不必要的(我只想检查用户是否购买了订阅)。

因此,如果我尝试创建一个“已安装的应用程序(Android)”而不是一个"web应用程序“,这仍然需要一个用户登录,以便能够管理用户的资源。

我不想这样。第三种选择称为“服务帐户”,它不需要用户登录:

当您有一个服务想要处理它的“自己”资源(例如,管理计算引擎资源的App应用程序),而不是外部用户的资源(例如,标准OAuth流)时,就会使用服务帐户。使用服务帐户,应用程序将是资源的所有者.如果您使用服务帐户,您将只获得有关服务购买的数据。-source

我不确定这是不是我想要的.

最后,还有这样的选择:

最简单的流程是不需要最终用户授权的流程。您仍然需要使用API键标识客户端应用程序。-source

这看起来很完美!然而,我最初被告知,要使用Google,我需要使用OAuth 2.0进行身份验证,而这并不使用最初告诉我需要的客户机ID。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-12 07:22:34

在这里,你要达到的目标至少有两个问题:

  1. 当您在Android应用程序中处理服务器响应时,您的代码中会有这样的内容: if (isSubscriptionValid()) 有人可以在他的设备上篡改应用程序的APK (这很容易),只需将检查替换为: 如果(真) 然后攻击者就可以访问您的内容,而无需订阅。
  2. 由于对API的调用必须由您的开发人员帐户授权,并且在每个用户设备上亲自登录显然是没有选择的,因此您必须选择服务帐户,因为您已经正确地计算出了这一点。 但是,这些数据只适用于服务器与服务器的交互,否则需要您将私钥存储在每个人的设备上,而且由于无法在安卓设备上安全地存储数据,您将无法满足这一要求: 私钥必须安全地存储和管理。

谷歌推荐您需要一个后端服务器来执行这种检查。因此,您可以在将内容移交给客户端之前决定订阅是否有效:

API设计用于从后端服务器中安全地管理订阅,以及扩展订阅并与其他服务集成。

如果没有可用的后端服务器,则必须依赖应用内计费通知

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12373914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档