说明
使用 chrome.identity
API 获取 OAuth2 访问令牌。
权限
identity
类型
AccountInfo
属性
- id
字符串
相应账号的唯一标识符。此 ID 在账号的整个生命周期内都不会发生变化。
AccountStatus
枚举
“同步”
指定是否为主要账号启用同步。
“ANY”
指定是否存在主账号(如果有)。
GetAuthTokenResult
属性
- grantedScopes
string[] 可选
授予扩展服务的 OAuth2 范围列表。
- token
字符串(选填)
与请求关联的特定令牌。
InvalidTokenDetails
属性
- token
字符串
应从缓存中移除的具体令牌。
ProfileDetails
属性
- accountStatus
已登录到相应个人资料的主账号的状态,应返回该状态的
ProfileUserInfo
。默认为SYNC
账号状态。
ProfileUserInfo
属性
- 电子邮件
字符串
当前配置文件中登录的用户账号的电子邮件地址。如果用户未登录或未指定
identity.email
清单权限,则为空。 - id
字符串
相应账号的唯一标识符。此 ID 在账号的整个生命周期内都不会发生变化。如果用户未登录,或者(在 M41 及更高版本中)未指定
identity.email
清单权限,则为空。
TokenDetails
属性
- 账号
AccountInfo 可选
应返回其令牌的账号 ID。如果未指定,该函数将使用 Chrome 个人资料中的账号:如果有同步账号,则使用该账号;否则,使用第一个 Google Web 账号。
- enableGranularPermissions
布尔值(可选)
Chrome 87 及更高版本借助
enableGranularPermissions
标志,扩展程序可以提前选择启用精细的权限请求页面,在该页面中,系统会单独授予或拒绝所请求的权限。 - 互动
布尔值(可选)
获取令牌可能需要用户登录 Chrome 或批准应用请求的范围。如果互动标志为
true
,getAuthToken
将根据需要提示用户。当标志为false
或省略时,每当需要提示时,getAuthToken
都会返回失败。 - scopes
string[] 可选
要请求的 OAuth2 范围列表。
如果存在
scopes
字段,则该字段会替换 manifest.json 中指定的范围列表。
WebAuthFlowDetails
属性
- abortOnLoadForNonInteractive
布尔值(可选)
Chrome 113 及更高版本是否在页面加载后终止非交互式请求的
launchWebAuthFlow
。此参数不会影响互动式流程。如果设置为
true
(默认值),则流程会在网页加载后立即终止。如果设置为false
,则只有在timeoutMsForNonInteractive
通过后,流程才会终止。对于使用 JavaScript 在网页加载后执行重定向的身份提供方,此功能非常有用。 - 互动
布尔值(可选)
是否以交互模式启动身份验证流程。
由于某些授权流程可能会立即重定向到结果网址,因此
launchWebAuthFlow
会隐藏其 WebView,直到第一次导航重定向到最终网址,或完成加载要显示的网页。如果
interactive
标志为true
,则在页面加载完成后显示窗口。如果标志为false
或被省略,如果初始导航未完成流程,launchWebAuthFlow
将返回错误。对于使用 JavaScript 进行重定向的流程,可以将
abortOnLoadForNonInteractive
设置为false
,同时设置timeoutMsForNonInteractive
,以便网页有机会执行任何重定向。 - timeoutMsForNonInteractive
number 可选
Chrome 113 及更高版本以毫秒为单位,
launchWebAuthFlow
是允许在非互动模式下运行的总时长上限。仅当interactive
为false
时才有效。 - 网址
字符串
启动身份验证流程的网址。
方法
clearAllCachedAuthTokens()
chrome.identity.clearAllCachedAuthTokens(): Promise<void>
重置 Identity API 的状态:
- 从令牌缓存中移除所有 OAuth2 访问令牌
- 移除用户的账号偏好设置
- 取消用户对所有身份验证流程的授权
返回
-
Promise<void>
Chrome 106 及更高版本
getAccounts()
chrome.identity.getAccounts(): Promise<AccountInfo[]>
检索描述相应个人资料中存在的账号的 AccountInfo 对象列表。
getAccounts
仅在开发版渠道中受支持。
返回
-
Promise<AccountInfo[]>
getAuthToken()
chrome.identity.getAuthToken(
details?: TokenDetails,
): Promise<GetAuthTokenResult>
使用 manifest.json 的 oauth2
部分中指定的客户端 ID 和范围获取 OAuth2 访问令牌。
Identity API 会在内存中缓存访问令牌,因此可以在需要令牌时随时以非互动方式调用 getAuthToken
。令牌缓存会自动处理过期问题。
为了提供良好的用户体验,请务必在应用中通过界面发起互动式令牌请求,说明授权的用途。如果不这样做,您的用户会收到授权请求,或者如果他们未登录,则会看到 Chrome 登录界面,但没有任何上下文。尤其是,请勿在应用首次启动时以交互方式使用 getAuthToken
。
注意:如果使用回调调用此函数,此函数不会返回对象,而是会将这两个属性作为单独的实参传递给回调。
参数
- 详细信息
TokenDetails 可选
令牌选项。
返回
-
Promise<GetAuthTokenResult>
Chrome 105 及更高版本
getProfileUserInfo()
chrome.identity.getProfileUserInfo(
details?: ProfileDetails,
): Promise<ProfileUserInfo>
检索已登录个人资料的用户的电子邮件地址和经过混淆处理的 GAIA ID。
需要 identity.email
清单权限。否则,返回空结果。
此 API 在以下两个方面与 identity.getAccounts 不同。返回的信息可离线使用,并且仅适用于相应个人资料的主要账号。
参数
- 详细信息Chrome 84 及更高版本
个人资料选项。
返回
-
Promise<ProfileUserInfo>
Chrome 106 及更高版本
getRedirectURL()
chrome.identity.getRedirectURL(
path?: string,
): string
生成要在 launchWebAuthFlow
中使用的重定向网址。
生成的网址与格式 https://<app-id>.chromiumapp.org/*
相匹配。
参数
- 路径
字符串(选填)
附加到生成的网址末尾的路径。
返回
-
字符串
launchWebAuthFlow()
chrome.identity.launchWebAuthFlow(
details: WebAuthFlowDetails,
): Promise<string | undefined>
在指定网址启动身份验证流程。
此方法通过启动 WebView 并将其导航到提供商的身份验证流程中的第一个网址,来实现与非 Google 身份提供商的身份验证流程。当提供方重定向到与模式 https://<app-id>.chromiumapp.org/*
匹配的网址时,窗口将关闭,并且最终重定向网址将传递给 callback
函数。
为了提供良好的用户体验,请务必在应用中通过界面启动互动式授权流程,说明授权的用途。如果不这样做,您的用户将收到没有上下文的授权请求。尤其是,请勿在应用首次启动时启动互动式身份验证流程。
参数
- 详细信息
WebAuth 流程选项。
返回
-
Promise<string | undefined>
Chrome 106 及更高版本
removeCachedAuthToken()
chrome.identity.removeCachedAuthToken(
details: InvalidTokenDetails,
): Promise<void>
从 Identity API 的令牌缓存中移除 OAuth2 访问令牌。
如果发现访问令牌无效,应将其传递给 removeCachedAuthToken 以从缓存中移除。然后,应用可以使用 getAuthToken
检索新令牌。
参数
- 详细信息
令牌信息。
返回
-
Promise<void>
Chrome 106 及更高版本
事件
onSignInChanged
chrome.identity.onSignInChanged.addListener(
callback: function,
)
当用户个人资料中某个账号的登录状态发生变化时触发。
参数
- callback
函数
callback
参数如下所示:(account: AccountInfo, signedIn: boolean) => void
- 账号
- signedIn
布尔值
-