故事:我正在制作一个允许用户购买订阅的 Android 应用程序,并且不需要用户拥有帐户或登录名。我想检查用户是否购买了订阅, Google Play Android Developer API 似乎提供了这项服务。
问题 (TL;DR):我应该将 OAuth 用作“Web 应用程序”、“已安装的应用程序”、“服务应用程序”,还是以上都不是?
问题:要开始这个,我被告知:
使用 OAuth 2.0 Web 服务器流对访问 Google Play Android Developer API 进行身份验证。在使用 API 之前,您需要设置 API 控制台项目、创建客户端 ID 并生成刷新令牌。-资源
很公平。然后有设置说明继续说:
在第二个页面上,选择 Web 应用程序并设置重定向 URI 和 Javascript 来源。
我的应用程序确实可以访问 Internet,但它是已安装的 Android 应用程序,而不是Web 应用程序,因此我没有“重定向 URI”或“Javascript 来源”来链接它。此外,这将需要用户登录,我不希望并且在我的情况下没有必要(我只想检查用户是否购买了订阅)。
因此,如果我尝试创建“已安装的应用程序(Android)”而不是“Web 应用程序”,这仍然需要用户登录,才能管理用户的资源。
我不想要这个。还有第三种选择,称为“服务帐户”,不需要用户登录:
当您的服务想要处理其“自己的”资源(例如,管理 Compute Engine 资源的 App Engine 应用)而不是外部用户的资源(例如,标准 OAuth 流程)时,使用服务帐户. 使用服务帐户,应用程序将成为资源的所有者……如果您使用服务帐户,您将只能获得有关服务购买的数据。-资源
我不确定这是否是我想要的...
最后,还有这个选项:
最简单的流程是不需要最终用户授权的流程。您仍然需要使用 API 密钥来识别您的客户端应用程序。-资源
这看起来很完美!但是,最初有人告诉我,要使用 Google Play Android Developer API,我需要使用 OAuth 2.0 进行身份验证,并且这不使用我最初被告知我特别需要的客户端 ID。