chrome.identity

說明

使用 chrome.identity API 取得 OAuth2 存取權杖。

權限

identity

類型

AccountInfo

屬性

  • id

    字串

    帳戶的專屬 ID。帳戶建立後,這個 ID 就不會再變更。

AccountStatus

Chrome 84 以上版本

列舉

「SYNC」
指出主要帳戶已啟用同步功能。

「ANY」
指定主要帳戶是否存在 (如有)。

GetAuthTokenResult

Chrome 105 以上版本

屬性

  • grantedScopes

    字串陣列 選用

    授予擴充功能的 OAuth2 範圍清單。

  • token

    字串 選填

    與要求相關聯的特定權杖。

InvalidTokenDetails

屬性

  • token

    字串

    應從快取中移除的特定權杖。

ProfileDetails

Chrome 84 以上版本

屬性

  • accountStatus

    主要帳戶的狀態,該帳戶已登入要傳回 ProfileUserInfo 的設定檔。預設為 SYNC 帳戶狀態。

ProfileUserInfo

屬性

  • 電子郵件

    字串

    登入目前設定檔的使用者帳戶電子郵件地址。如果使用者未登入或未指定 identity.email 資訊清單權限,則為空白。

  • id

    字串

    帳戶的專屬 ID。帳戶 ID 在帳戶的生命週期內不會變更。如果使用者未登入,或 (在 M41 以上版本) 未指定 identity.email 資訊清單權限,則為空白。

TokenDetails

屬性

  • 帳戶

    AccountInfo 選用

    要傳回權杖的帳戶 ID。如未指定,函式會使用 Chrome 設定檔中的帳戶:如果有的話,會使用同步帳戶,否則會使用第一個 Google 網路帳戶。

  • enableGranularPermissions

    布林值 選填

    Chrome 87 以上版本

    擴充功能可透過 enableGranularPermissions 標記,提早啟用精細權限同意畫面,讓使用者逐一授予或拒絕要求的權限。

  • 互動

    布林值 選填

    擷取權杖時,可能需要使用者登入 Chrome,或核准應用程式要求的範圍。如果互動式標記為 truegetAuthToken 會視需要提示使用者。如果旗標為 false 或省略,getAuthToken 只要需要提示就會傳回失敗。

  • 範圍

    字串陣列 選用

    要要求的 OAuth2 範圍清單。

    如果存在 scopes 欄位,系統會覆寫 manifest.json 中指定的範圍清單。

WebAuthFlowDetails

屬性

  • abortOnLoadForNonInteractive

    布林值 選填

    Chrome 113 以上版本

    是否要在網頁載入後,終止非互動式要求的 launchWebAuthFlow。這項參數不會影響互動式流程。

    如果設為 true (預設),流程會在網頁載入後立即終止。如果設為 false,流程只會在 timeoutMsForNonInteractive 傳遞後終止。如果身分識別提供者使用 JavaScript 在網頁載入後執行重新導向,這項功能就非常實用。

  • 互動

    布林值 選填

    是否要在互動模式中啟動驗證流程。

    由於部分驗證流程可能會立即重新導向至結果網址,launchWebAuthFlow 會隱藏網頁檢視畫面,直到第一次導覽重新導向至最終網址,或載入完畢要顯示的網頁為止。

    如果 interactive 旗標為 true,網頁載入完成時就會顯示視窗。如果標記為 false 或省略,如果初始導覽未完成流程,launchWebAuthFlow 會傳回錯誤。

    對於使用 JavaScript 重新導向的流程,您可以將 abortOnLoadForNonInteractive 設為 false,並將 timeoutMsForNonInteractive 設為,讓網頁有機會執行任何重新導向。

  • timeoutMsForNonInteractive

    號碼 選填

    Chrome 113 以上版本

    以毫秒為單位,launchWebAuthFlow 是指在非互動模式下執行的總時間上限。只有在 interactivefalse 時才會生效。

  • 網址

    字串

    啟動驗證流程的網址。

方法

clearAllCachedAuthTokens()

Chrome 87 以上版本
chrome.identity.clearAllCachedAuthTokens(): Promise<void>

重設 Identity API 的狀態:

  • 從權杖快取中移除所有 OAuth2 存取權杖
  • 移除使用者帳戶偏好設定
  • 取消授權使用者存取所有驗證流程

傳回

  • Promise<void>

    Chrome 106 以上版本

getAccounts()

開發人員頻道
chrome.identity.getAccounts(): Promise<AccountInfo[]>

擷取 AccountInfo 物件清單,說明設定檔中的帳戶。

getAccounts 僅適用於開發人員版。

傳回

getAuthToken()

chrome.identity.getAuthToken(
  details?: TokenDetails,
)
: Promise<GetAuthTokenResult>

使用 manifest.json oauth2 區段中指定的用戶端 ID 和範圍,取得 OAuth2 存取權杖

Identity API 會將存取權杖快取在記憶體中,因此需要權杖時,隨時可以呼叫 getAuthToken,不必進行互動。權杖快取會自動處理到期問題。

為確保使用者體驗良好,請務必在應用程式的 UI 中發起互動式權杖要求,說明授權用途。否則使用者會收到授權要求,或看到 Chrome 登入畫面 (如果使用者未登入),但沒有任何背景資訊。尤其是在首次啟動應用程式時,請勿以互動方式使用 getAuthToken

注意:如果呼叫時使用回呼,這個函式不會傳回物件,而是將這兩項屬性當做個別引數傳遞至回呼。

參數

傳回

getProfileUserInfo()

chrome.identity.getProfileUserInfo(
  details?: ProfileDetails,
)
: Promise<ProfileUserInfo>

擷取登入設定檔的使用者電子郵件地址和經過模糊處理的 Gaia ID。

需要 identity.email 資訊清單權限。否則會傳回空白結果。

這個 API 與 identity.getAccounts 有兩項不同之處。系統會傳回離線可用的資訊,且僅適用於設定檔的主要帳戶。

參數

  • 詳細資料
    Chrome 84 以上版本

    設定檔選項。

傳回

getRedirectURL()

chrome.identity.getRedirectURL(
  path?: string,
)
: string

產生要在 launchWebAuthFlow 中使用的重新導向網址。

產生的網址符合 https://<app-id>.chromiumapp.org/* 模式。

參數

  • 路徑

    字串 選填

    附加至產生網址結尾的路徑。

傳回

  • 字串

launchWebAuthFlow()

chrome.identity.launchWebAuthFlow(
  details: WebAuthFlowDetails,
)
: Promise<string | undefined>

在指定網址啟動驗證流程。

這個方法會啟動網頁檢視畫面,並將其導向供應商驗證流程中的第一個網址,藉此啟用非 Google 身分驗證供應商的驗證流程。當供應商重新導向至符合 https://<app-id>.chromiumapp.org/* 模式的網址時,視窗會關閉,最終重新導向網址會傳遞至 callback 函式。

如要提供良好的使用者體驗,請務必在應用程式的 UI 中啟動互動式授權流程,說明授權用途。否則使用者會收到沒有背景資訊的授權要求。特別是應用程式首次啟動時,請勿啟動互動式驗證流程。

參數

傳回

  • 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