browser.identity

說明

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

權限

identity

類型

AccountInfo

屬性

  • id

    字串

    帳戶的專屬 ID。這個 ID 在帳戶存續期間不會變更。

AccountStatus

Chrome 84 以上版本 Chrome 148 以上版本的瀏覽器。*

列舉

「SYNC」
指定為主要帳戶啟用同步功能。

"ANY"
指定主要帳戶是否存在 (如果有的話)。

GetAuthTokenResult

Chrome 105 以上版本 Chrome 148 以上版本為 browser.*

屬性

  • grantedScopes

    string[] 選填

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

  • token

    字串 選填

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

InvalidTokenDetails

屬性

  • token

    字串

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

ProfileDetails

Chrome 84 以上版本 Chrome 148 以上版本的瀏覽器。*

屬性

  • accountStatus

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

ProfileUserInfo

屬性

  • 電子郵件

    字串

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

  • id

    字串

    帳戶的專屬 ID。這個 ID 在帳戶存續期間不會變更。如果使用者未登入,或 (在 M41 以上版本中) 未指定 identity.email 資訊清單權限,則會留空。

TokenDetails

屬性

  • 帳戶

    AccountInfo 選填

    要傳回權杖的帳戶 ID。如未指定,函式會使用 Chrome 設定檔中的帳戶:同步帳戶 (如有),或第一個 Google 網頁帳戶。

  • enableGranularPermissions

    布林值 選填

    Chrome 87 以上版本 Chrome 148 起為 browser.*

    enableGranularPermissions 旗標可讓擴充功能提早選擇加入精細權限同意畫面,使用者可在該畫面中個別授予或拒絕要求的權限。

  • 互動

    布林值 選填

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

  • 範圍

    string[] 選填

    要要求的 OAuth2 範圍清單。

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

WebAuthFlowDetails

屬性

  • abortOnLoadForNonInteractive

    布林值 選填

    Chrome 113 以上版本 Chrome 148 起為 browser.*

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

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

  • 互動

    布林值 選填

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

    由於某些驗證流程可能會立即重新導向至結果網址,因此 launchWebAuthFlow 會隱藏其網頁檢視,直到第一次導覽重新導向至最終網址,或完成載入要顯示的網頁。

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

    如果流程使用 JavaScript 重新導向,可將 abortOnLoadForNonInteractive 設為 false,並設定 timeoutMsForNonInteractive,讓網頁有機會執行任何重新導向。

  • timeoutMsForNonInteractive

    數字 選填

    Chrome 113 以上版本 Chrome 148 起為 browser.*

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

  • 網址

    字串

    啟動授權流程的網址。

方法

clearAllCachedAuthTokens()

Chrome 87 以上版本 Chrome 148 起為 browser.*
browser.identity.clearAllCachedAuthTokens(): Promise<void>

重設 Identity API 的狀態:

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

傳回

  • 承諾<void>

    Chrome 106 以上版本 Chrome 148 起為 browser.*

    傳回 Promise,在狀態清除後解析。

getAccounts()

開發人員版
browser.identity.getAccounts(): Promise<AccountInfo[]>

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

getAccounts 僅適用於開發人員版。

傳回

getAuthToken()

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

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

Identity API 會將存取權杖快取在記憶體中,因此每當需要權杖時,可以非互動方式呼叫 getAuthToken。權杖快取會自動處理到期問題。

為提供良好的使用者體驗,請務必透過應用程式中的 UI 發出互動式權杖要求,並說明授權用途。否則使用者會收到授權要求,或在未登入時看到 Chrome 登入畫面,但不知道原因。具體來說,請勿在應用程式首次啟動時,以互動方式使用 getAuthToken。

注意:使用回呼呼叫時,這個函式不會傳回物件,而是將這兩個屬性做為個別引數傳回給回呼。

參數

傳回

  • Chrome 105 以上版本 Chrome 148 以上版本為 browser.*

    傳回 Promise,其會解析為資訊清單指定的 OAuth2 存取權杖,或在發生錯誤時拒絕。自 Chrome 87 起,系統會填入 grantedScopes 參數。如果可用,這個參數會包含與傳回權杖對應的已授予範圍清單。

getProfileUserInfo()

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

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

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

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

參數

  • 詳細資料
    Chrome 84 以上版本 Chrome 148 以上版本的瀏覽器。*

    個人資料選項。

傳回

  • Chrome 106 以上版本 Chrome 148 起為 browser.*

    傳回 Promise,其會解析為主要 Chrome 帳戶的 ProfileUserInfo,或如果具有指定 details 的帳戶不存在,則傳回空白 ProfileUserInfo。

getRedirectURL()

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

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

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

參數

  • 路徑

    字串 選填

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

傳回

  • 字串

launchWebAuthFlow()

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

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

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

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

參數

傳回

  • Promise<string | undefined>

    Chrome 106 以上版本 Chrome 148 起為 browser.*

    傳回 Promise,其解析結果為重新導向回應用程式的網址。

removeCachedAuthToken()

browser.identity.removeCachedAuthToken(
  details: InvalidTokenDetails,
)
: Promise<void>

從 Identity API 的權杖快取中移除 OAuth2 存取權杖。

如果發現存取權杖無效,應將其傳遞至 removeCachedAuthToken,從快取中移除。應用程式接著可以使用 getAuthToken 擷取新的權杖。

參數

傳回

  • 承諾<void>

    Chrome 106 以上版本 Chrome 148 起為 browser.*

    傳回 Promise,在權杖從快取中移除時解析。

事件

onSignInChanged

browser.identity.onSignInChanged.addListener(
  callback: function,
)

使用者設定檔中的帳戶登入狀態變更時觸發。

參數

  • callback

    函式

    callback 參數如下:

    (account: AccountInfo, signedIn: boolean) => void