跨客户身份

开发人员构建软件时,通常包括在Web服务器上运行的模块,在浏览器中运行的其他模块以及作为本机移动应用程序运行的其他模块。开发人员和使用其软件的人员通常都将所有这些模块视为单个应用程序的一部分。

Google的OAuth 2.0实现支持这种世界观。要使用任何基于OAuth2.0的服务,您必须在Google API Console中设置软件。 API Console中的组织单位是一个“项目”,可以对应一个多组件应用程序。对于每个项目,您都可以提供品牌信息,并且必须指定应用程序将访问哪些API。多组件应用程序的每个组件都由客户端ID标识客户端ID是在API Console中生成的唯一字符串。

跨客户授权目标

当应用程序使用OAuth 2.0进行授权时,该应用程序代表用户执行操作,以请求OAuth 2.0访问令牌来访问资源,该应用程序通过一个或多个作用域字符串来标识该资源。通常,要求用户批准访问。

当用户为特定范围授予对您的应用的访问权限时,该用户将查看用户同意屏幕,其中包括您在Google API Console中设置的项目级产品品牌。因此,Google认为,当用户向项目中的任何客户端ID授予对特定范围的访问权限时,授予表示该用户对该范围内的整个应用程序的信任。

结果是,只要Google的授权基础架构可以可靠地对应用程序的组件进行身份验证,则不应提示用户多次批准同一逻辑应用程序对任何资源的访问,该授权基础结构如今包括Web应用程序,Android应用程序,Chrome应用程序,iOS应用程序,本机桌面应用程序和有限输入的设备。

跨客户端访问令牌

软件可以通过多种方式获得OAuth 2.0访问令牌,具体取决于运行代码的平台。有关详细信息,请参阅使用OAuth 2.0访问Google API 。通常,授予访问令牌时需要用户批准。

幸运的是,当评估是否要授权同一项目中的其他项目时,Google授权基础结构可以使用有关给定项目中的客户ID的用户批准信息。

结果是,如果Android应用程序请求特定范围的访问令牌,并且发出请求的用户已经针对同一范围的同一项目中的Web应用程序授予了批准,则不会再次要求用户批准。这两种方法都起作用:如果您的Android应用程序中已授予对范围的访问权限,则同一项目中的另一个客户端(例如Web应用程序)将不再再次要求它。