chrome.identity
- Description
Use the
chrome.identity
API to get OAuth2 access tokens. - Permissions
identity
Summary
- Types
- Methods
identity.clearAllCachedAuthTokens(callback: function)
identity.getAccounts(callback: function)
identity.getAuthToken(details: TokenDetails, callback: function)
identity.getProfileUserInfo(details?: ProfileDetails, callback: function)
identity.getRedirectURL(path: string): string
identity.launchWebAuthFlow(details: WebAuthFlowDetails, callback: function)
identity.removeCachedAuthToken(details: InvalidTokenDetails, callback: function)
- Events
Types
AccountInfo
Properties
- idstring
A unique identifier for the account. This ID will not change for the lifetime of the account.
InvalidTokenDetails
Properties
- tokenstring
The specific token that should be removed from the cache.
ProfileDetails
Since Chrome 84.
Properties
- accountStatusAccountStatus optional
A status of the primary account signed into a profile whose
ProfileUserInfo
should be returned. Defaults toSYNC
account status.
ProfileUserInfo
Properties
- emailstring
An email address for the user account signed into the current profile. Empty if the user is not signed in or the
identity.email
manifest permission is not specified. - idstring
A unique identifier for the account. This ID will not change for the lifetime of the account. Empty if the user is not signed in or (in M41+) the
identity.email
manifest permission is not specified.
TokenDetails
Properties
- accountAccountInfo optional
The account ID whose token should be returned. If not specified, the function will use an account from the Chrome profile: the Sync account if there is one, or otherwise the first Google web account.
- enableGranularPermissionsboolean optional
Since Chrome 87.
The
enableGranularPermissions
flag allows extensions to opt-in early to the granular permissions consent screen, in which requested permissions are granted or denied individually. - interactiveboolean optional
Fetching a token may require the user to sign-in to Chrome, or approve the application's requested scopes. If the interactive flag is
true
,getAuthToken
will prompt the user as necessary. When the flag isfalse
or omitted,getAuthToken
will return failure any time a prompt would be required. - scopesstring[] optional
A list of OAuth2 scopes to request.
When the
scopes
field is present, it overrides the list of scopes specified in manifest.json.
WebAuthFlowDetails
Properties
- interactiveboolean optional
Whether to launch auth flow in interactive mode.
Since some auth flows may immediately redirect to a result URL,
launchWebAuthFlow
hides its web view until the first navigation either redirects to the final URL, or finishes loading a page meant to be displayed.If the interactive flag is
true
, the window will be displayed when a page load completes. If the flag isfalse
or omitted,launchWebAuthFlow
will return with an error if the initial navigation does not complete the flow. - urlstring
The URL that initiates the auth flow.
AccountStatus
Since Chrome 84.
Enum
"SYNC"
, or "ANY"
Methods
clearAllCachedAuthTokens
identity.clearAllCachedAuthTokens(callback: function)
Since Chrome 87.
Resets the state of the Identity API:
- Removes all OAuth2 access tokens from the token cache
- Removes user's account preferences
- De-authorizes the user from all auth flows
Parameters
- callbackfunction
Called when the state has been cleared.
The callback parameter should be a function that looks like this:
() => {...}
getAccounts
identity.getAccounts(callback: function)
Retrieves a list of AccountInfo objects describing the accounts present on the profile.
getAccounts
is only supported on dev channel.
Parameters
- callbackfunction
The callback parameter should be a function that looks like this:
(accounts: AccountInfo[]) => {...}
- accounts
getAuthToken
identity.getAuthToken(details: TokenDetails, callback: function)
Gets an OAuth2 access token using the client ID and scopes specified in the oauth2
section of manifest.json.
The Identity API caches access tokens in memory, so it's ok to call getAuthToken
non-interactively any time a token is required. The token cache automatically handles expiration.
For a good user experience it is important interactive token requests are initiated by UI in your app explaining what the authorization is for. Failing to do this will cause your users to get authorization requests, or Chrome sign in screens if they are not signed in, with with no context. In particular, do not use getAuthToken
interactively when your app is first launched.
Parameters
- details
Token options.
- callbackfunction
Called with an OAuth2 access token as specified by the manifest, or undefined if there was an error. The
grantedScopes
parameter is populated since Chrome 87. When available, this parameter contains the list of granted scopes corresponding with the returned token.The callback parameter should be a function that looks like this:
(token: string, grantedScopes: string[]) => {...}
- tokenstring
- grantedScopesstring[]
Since Chrome 86.
getProfileUserInfo
identity.getProfileUserInfo(details?: ProfileDetails, callback: function)
Retrieves email address and obfuscated gaia id of the user signed into a profile.
Requires the identity.email
manifest permission. Otherwise, returns an empty result.
This API is different from identity.getAccounts in two ways. The information returned is available offline, and it only applies to the primary account for the profile.
Parameters
- detailsProfileDetails optional
Since Chrome 84.
Profile options.
- callbackfunction
Called with the
ProfileUserInfo
of the primary Chrome account, of an emptyProfileUserInfo
if the account with givendetails
doesn't exist.The callback parameter should be a function that looks like this:
(userInfo: ProfileUserInfo) => {...}
- userInfo
getRedirectURL
identity.getRedirectURL(path: string): string
Generates a redirect URL to be used in launchWebAuthFlow
.
The generated URLs match the pattern https://<app-id>.chromiumapp.org/*
.
Parameters
- pathstring
The path appended to the end of the generated URL.
Returns
- returnsstring
launchWebAuthFlow
identity.launchWebAuthFlow(details: WebAuthFlowDetails, callback: function)
Starts an auth flow at the specified URL.
This method enables auth flows with non-Google identity providers by launching a web view and navigating it to the first URL in the provider's auth flow. When the provider redirects to a URL matching the pattern https://<app-id>.chromiumapp.org/*
, the window will close, and the final redirect URL will be passed to the callback function.
For a good user experience it is important interactive auth flows are initiated by UI in your app explaining what the authorization is for. Failing to do this will cause your users to get authorization requests with no context. In particular, do not launch an interactive auth flow when your app is first launched.
Parameters
- details
WebAuth flow options.
- callbackfunction
Called with the URL redirected back to your application.
The callback parameter should be a function that looks like this:
(responseUrl: string) => {...}
- responseUrlstring
removeCachedAuthToken
identity.removeCachedAuthToken(details: InvalidTokenDetails, callback: function)
Removes an OAuth2 access token from the Identity API's token cache.
If an access token is discovered to be invalid, it should be passed to removeCachedAuthToken to remove it from the cache. The app may then retrieve a fresh token with getAuthToken
.
Parameters
- details
Token information.
- callbackfunction
Called when the token has been removed from the cache.
The callback parameter should be a function that looks like this:
() => {...}
Events
onSignInChanged
identity.onSignInChanged.addListener(listener: function)
Fired when signin state changes for an account on the user's profile.
Event
- listenerfunction
The listener parameter should be a function that looks like this:
(account: AccountInfo, signedIn: boolean) => {...}
- account
- signedInboolean