身份

使用身份 API 获取 OAuth2 授权代码或访问令牌,然后扩展程序可以使用该令牌访问支持 OAuth2 访问的服务(例如 Google 或 Facebook)中的用户数据。

OAuth2 流程因服务提供商而异,因此,要将此 API 与特定服务提供商一起使用,请查阅其文档。例如

身份 API 提供 identity.launchWebAuthFlow() 函数。这会在必要时对用户进行服务身份验证,并在必要时要求用户授权扩展程序访问数据。该函数以访问令牌或授权代码完成,具体取决于提供商。

然后,扩展程序完成 OAuth2 流程以获取经过验证的访问令牌,并根据用户授予的授权在 HTTPS 请求中使用该令牌访问用户的数据。

要使用此 API,您必须具有“身份” API 权限

设置

在发布扩展之前,您必须进行一些设置。

获取重定向 URL

重定向 URL 表示 identity.launchWebAuthFlow() 的终结点,其中访问令牌或授权代码将传递给扩展程序。浏览器从重定向 URL 中提取结果,而无需加载其响应。

您可以通过调用 identity.getRedirectURL() 获取重定向 URL。此函数从附加组件的 ID 派生重定向 URL。为了简化测试,请使用 browser_specific_settings 键显式设置附加组件的 ID(否则,每次您 临时安装附加组件 时,您都会获得不同的重定向 URL)。

identity.getRedirectURL() 返回固定域名和从附加组件 ID 派生的子域名的 URL。某些 OAuth 服务器(例如 Google)仅接受具有经过验证的所有权的域名作为重定向 URL。由于虚拟域名无法由扩展程序开发人员控制,因此默认域名并非始终可以使用。

但是,回环地址是可以接受的替代方案,它不需要域名验证(基于 RFC 8252,第 7.3 节)。从 Firefox 86 开始,格式为 http://127.0.0.1/mozoauth2/[identity.getRedirectURL() 返回的 URL 的子域名] 的回环地址允许作为重定向 URL 的值。

注意:从 Firefox 75 开始,您必须使用 identity.getRedirectURL() 返回的重定向 URL。早期版本允许您提供任何重定向 URL。

从 Firefox 86 开始,也可以使用上面描述的特殊回环地址。

您将在两个地方使用重定向 URL

  • 在将扩展程序注册为 OAuth2 客户端时提供它。
  • 将其传递到 identity.launchWebAuthFlow() 中,作为添加到该函数的 url 参数的 URL 参数。

注册您的扩展程序

在您使用 OAuth2 与服务提供商合作之前,您必须在提供商处将扩展程序注册为 OAuth2 客户端。

这通常特定于服务提供商,但总的来说,这意味着在提供商的网站上为您的扩展程序创建条目。在此过程中,您提供重定向 URL,并接收客户端 ID(有时还接收密钥)。您需要将这两者都传递到 identity.launchWebAuthFlow() 中。

函数

identity.getRedirectURL()

获取重定向 URL。

identity.launchWebAuthFlow()

启动 WAF。

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

示例扩展

注意:此 API 基于 Chromium 的 chrome.identity API。