使用 REST API

本文說明如何使用 Identity Platform REST API 執行常見的使用者作業,例如登入使用者和使用權杖。

事前準備

如要使用 REST API,您必須具備 Identity Platform API 金鑰。取得金鑰的方法如下:

  1. 前往 Google Cloud 控制台的「Identity Providers」頁面。
    前往「Identity Providers」(識別資訊提供者) 頁面

  2. 按一下「Application setup details」(應用程式設定詳細資料)

  3. 複製 apiKey 欄位。

請注意,所有 API 呼叫都必須透過 HTTPS 傳送。

呼叫 API

將自訂權杖換成 ID 和重新整理權杖

您可以向 signInWithCustomToken 端點發出 HTTP POST 要求,將自訂驗證權杖換成 ID 和重新整理權杖。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
token 字串 Identity Platform 自訂權杖,可用於建立 ID 和重新整理權杖配對。
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。應一律為 true。
tenantId 字串 使用者登入的租用戶 ID。僅用於多租戶環境。
必須與權杖中的 tenant_id 相符。
自訂權杖宣告
屬性 名稱 說明
alg 演算法 應為 RS256
iss 核發單位 專案的服務帳戶電子郵件地址。
主旨 專案的服務帳戶電子郵件地址。
aud 目標對象 https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit
iat 核發時間 目前時間,以自 Unix Epoch 紀元時間起算的秒數為單位。
exp 到期時間 權杖到期時間,以自 Unix 紀元時間起算的秒數為單位。比 iat最多 3600 秒
注意:這項設定只會控制自訂權杖本身的到期時間。不過,一旦您使用 signInWithCustomToken() 為使用者登入,他們就會持續登入裝置,直到工作階段失效或使用者登出為止。
uid 使用者 ID 使用者的專屬 ID,長度介於 1 到 36 個字元。
tenant_id 用戶群 ID 使用者登入的租用戶 ID。
claims (選填) 可選的專屬宣告,可納入安全性規則 authrequest.auth 變數。
回應酬載
屬性名稱 類型 說明
idToken 字串 由提供的自訂權杖產生的 Identity Platform ID 權杖。
refreshToken 字串 系統會根據提供的自訂權杖產生 Identity Platform 更新權杖。
expiresIn 字串 ID 權杖的到期秒數。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"token":"[CUSTOM_TOKEN]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含 Identity Platform ID 權杖和與自訂權杖相關聯的重新整理權杖。

回應範例

{
  "idToken": "[ID_TOKEN]",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600"
}

常見錯誤代碼

  • INVALID_CUSTOM_TOKEN:自訂權杖格式不正確,或權杖因某些原因而無效 (例如已過期、簽章無效等)
  • CREDENTIAL_MISMATCH:自訂權杖對應至其他 Google Cloud 專案。

將更新權杖換成 ID 權杖

您可以向 securetoken.googleapis.com 端點發出 HTTP POST 要求,藉此重新整理 Identity Platform ID 權杖。

方法:POST

Content-Type: application/x-www-form-urlencoded

端點
https://securetoken.googleapis.com/v1/token?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
grant_type 字串 更新權杖的授權類型,一律為「refresh_token」。
refresh_token 字串 Identity Platform 更新權杖。
回應酬載
屬性名稱 類型 說明
expires_in 字串 ID 權杖的到期秒數。
token_type 字串 重新整理權杖的類型,一律為「Bearer」。
refresh_token 字串 要求中提供的 Identity Platform 更新權杖或新的更新權杖。
id_token 字串 Identity Platform ID 權杖。
user_id 字串 與提供的 ID 權杖相對應的使用者 ID。
project_id 字串 您的 Google Cloud 專案 ID。

要求範例

curl 'https://securetoken.googleapis.com/v1/token?key=[API_KEY]' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=refresh_token&refresh_token=[REFRESH_TOKEN]'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含新的 Identity Platform ID 權杖和重新整理權杖。

回應範例

{
  "expires_in": "3600",
  "token_type": "Bearer",
  "refresh_token": "[REFRESH_TOKEN]",
  "id_token": "[ID_TOKEN]",
  "user_id": "tRcfmLH7o2XrNELi...",
  "project_id": "1234567890"
}

常見錯誤代碼

  • TOKEN_EXPIRED:使用者的憑證已失效。使用者必須重新登入。
  • USER_DISABLED:使用者帳戶已遭管理員停用。
  • USER_NOT_FOUND:找不到與重新整理權杖相對應的使用者。使用者很可能已遭刪除。
  • API 金鑰無效。請傳遞有效的 API 金鑰。(提供的 API 金鑰無效)
  • INVALID_REFRESH_TOKEN:提供的更新權杖無效。
  • 收到無效的 JSON 酬載。不明名稱「refresh_tokens」:無法繫結查詢參數。要求訊息中找不到「refresh_tokens」欄位。
  • INVALID_GRANT_TYPE:指定的授權類型無效。
  • MISSING_REFRESH_TOKEN:未提供重新整理權杖。
  • PROJECT_NUMBER_MISMATCH:重新整理權杖的專案編號與提供的 API 金鑰不符。

使用電子郵件地址 / 密碼註冊

您可以向 Auth signupNewUser 端點發出 HTTP POST 要求,建立新的電子郵件和密碼使用者。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
電子郵件 字串 使用者要建立的電子郵件地址。
密碼 字串 使用者要建立的密碼。
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。應一律為 true。
tenantId 字串 要建立的使用者租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
idToken 字串 新建立使用者的 Identity Platform ID 權杖。
電子郵件 字串 新建立使用者的電子郵件地址。
refreshToken 字串 新建立使用者的 Identity Platform 重新整理權杖。
expiresIn 字串 ID 權杖的到期秒數。
localId 字串 新建立使用者的 uid。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"[user@example.com]","password":"[PASSWORD]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與新帳戶相關聯的 Identity Platform ID 權杖和更新權杖。

回應範例

{
  "idToken": "[ID_TOKEN]",
  "email": "[user@example.com]",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "localId": "tRcfmLH7..."
}

常見錯誤代碼

  • EMAIL_EXISTS:電子郵件地址已由其他帳戶使用。
  • OPERATION_NOT_ALLOWED:這項專案已停用密碼登入功能。
  • TOO_MANY_ATTEMPTS_TRY_LATER:由於出現異常活動,系統已封鎖來自這部裝置的所有要求。請稍後再試。

使用電子郵件地址 / 密碼登入

您可以向 Auth verifyPassword 端點發出 HTTP POST 要求,以電子郵件和密碼登入使用者。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
電子郵件 字串 使用者用來登入的電子郵件地址。
密碼 字串 帳戶密碼。
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。應一律為 true。
tenantId 字串 使用者登入的租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
idToken 字串 經過驗證的使用者所需的 Identity Platform ID 權杖。
電子郵件 字串 已驗證使用者的電子郵件地址。
refreshToken 字串 已驗證使用者的 Identity Platform 重新整理權杖。
expiresIn 字串 ID 權杖的到期秒數。
localId 字串 已驗證使用者的 uid。
已註冊 布林值 電子郵件地址是否屬於現有帳戶。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"[user@example.com]","password":"[PASSWORD]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與現有電子郵件/密碼帳戶相關聯的 Identity Platform ID 權杖和重新整理權杖。

回應範例

{
  "localId": "ZY1rJK0eYLg...",
  "email": "[user@example.com]",
  "displayName": "",
  "idToken": "[ID_TOKEN]",
  "registered": true,
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600"
}

常見錯誤代碼

  • EMAIL_NOT_FOUND:沒有對應於此 ID 的使用者記錄。使用者可能已遭到刪除。
  • INVALID_PASSWORD:密碼無效或使用者未設定密碼。
  • USER_DISABLED:使用者帳戶已遭管理員停用。

匿名登入

您可以向 Auth signupNewUser 端點發出 HTTP POST 要求,以匿名方式登入使用者。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。應一律為 true。
tenantId 字串 使用者登入的租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
idToken 字串 新建立使用者的 Identity Platform ID 權杖。
電子郵件 字串 由於使用者是匿名的,因此這個值應為空白。
refreshToken 字串 新建立使用者的 Identity Platform 重新整理權杖。
expiresIn 字串 ID 權杖的到期秒數。
localId 字串 新建立使用者的 uid。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與匿名使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

回應範例

{
  "idToken": "[ID_TOKEN]",
  "email": "",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "localId": "Jws4SVjpT..."
}

常見錯誤代碼

  • OPERATION_NOT_ALLOWED:這項專案已停用匿名使用者登入功能。

使用 OAuth 憑證登入

您可以向 Auth verifyAssertion 端點發出 HTTP POST 要求,讓使用者登入 OAuth 憑證。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
requestUri 字串 IdP 將使用者重新導向的 URI。
postBody 字串 包含 OAuth 憑證 (ID 權杖或存取權杖) 和發出憑證的供應商 ID。
returnSecureToken 布林值 是否傳回 ID 和重新整理權杖。應一律為 true。
returnIdpCredential 布林值 是否要強制在發生以下錯誤時傳回 OAuth 憑證:FEDERATED_USER_ID_ALREADY_LINKED 和 EMAIL_EXISTS。
tenantId 字串 使用者登入的租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
federatedId 字串 這個專屬 ID 可識別 ID 提供者帳戶。
providerId 字串 已連結的供應商 ID (例如 Google 供應商的「google.com」)。
localId 字串 已驗證使用者的 uid。
emailVerified 布林值 登入電子郵件是否已通過驗證。
電子郵件 字串 帳戶的電子郵件地址。
oauthIdToken 字串 OIDC ID 權杖 (如有)。
oauthAccessToken 字串 OAuth 存取權杖 (如有)。
oauthTokenSecret 字串 OAuth 1.0 憑證密鑰 (如有)。
rawUserInfo 字串 字串化 JSON 回應,其中包含與提供的 OAuth 憑證相對應的所有 IdP 資料。
firstName 字串 帳戶的名字。
lastName 字串 帳戶的姓氏。
fullName 字串 帳戶的全名。
displayName 字串 帳戶的顯示名稱。
photoUrl 字串 帳戶的相片網址。
idToken 字串 經過驗證的使用者所需的 Identity Platform ID 權杖。
refreshToken 字串 已驗證使用者的 Identity Platform 重新整理權杖。
expiresIn 字串 ID 權杖的到期秒數。
needConfirmation 布林值 是否已存在另一個使用相同憑證的帳戶。使用者必須登入原始帳戶,然後將目前的憑證連結至該帳戶。

含有 OAuth ID 權杖的示例要求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"id_token=[GOOGLE_ID_TOKEN]&providerId=[google.com]","requestUri":"[http://localhost]","returnIdpCredential":true,"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

含有 OAuth ID 權杖的範例回應

{
  "federatedId": "https://accounts.google.com/1234567890",
  "providerId": "google.com",
  "localId": "5xwsPCWYo...",
  "emailVerified": true,
  "email": "user@example.com",
  "oauthIdToken": "[GOOGLE_ID_TOKEN]",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "displayName": "John Doe",
  "idToken": "[ID_TOKEN]",
  "photoUrl": "https://lh5.googleusercontent.com/.../photo.jpg",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "rawUserInfo": "{\"updated_time\":\"2017-02-22T01:10:57+0000\",\"gender\":\"male\", ...}"
}

含有 OAuth 存取權杖的示例要求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=[facebook.com]","requestUri":"[http://localhost]","returnIdpCredential":true,"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

含有 OAuth 存取權杖的範例回應

{
  "federatedId": "http://facebook.com/1234567890",
  "providerId": "facebook.com",
  "localId": "5xwsPCWYo...",
  "emailVerified": true,
  "email": "user@example.com",
  "oauthAccessToken": "[FACEBOOK_ACCESS_TOKEN]",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "displayName": "John Doe",
  "idToken": "[ID_TOKEN]",
  "photoUrl": "https://scontent.xx.fbcdn.net/v/...",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "rawUserInfo": "{\"updated_time\":\"2017-02-22T01:10:57+0000\",\"gender\":\"male\", ...}"
}

使用 Twitter OAuth 1.0 憑證的示例要求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"access_token=[TWITTER_ACCESS_TOKEN]&oauth_token_secret=[TWITTER_TOKEN_SECRET]&providerId=[twitter.com]","requestUri":"[http://localhost]","returnIdpCredential":true,"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

使用 Twitter OAuth 1.0 憑證的範例回應

{
  "federatedId": "http://twitter.com/1234567890",
  "providerId": "twitter.com",
  "localId": "5xwsPCWYo...",
  "emailVerified": true,
  "email": "user@example.com",
  "oauthAccessToken": "[OAUTH_ACCESS_TOKEN]",
  "oauthTokenSecret": "[OAUTH_TOKEN_SECRET]",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "displayName": "John Doe",
  "idToken": "[ID_TOKEN]",
  "photoUrl": "http://abs.twimg.com/sticky/...",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "rawUserInfo": "{\"updated_time\":\"2017-02-22T01:10:57+0000\",\"gender\":\"male\", ...}"
}

常見錯誤代碼

  • OPERATION_NOT_ALLOWED:這個專案已停用對應的供應商。
  • INVALID_IDP_RESPONSE:提供的驗證憑證格式錯誤或已過期。

擷取電子郵件供應商

您可以向 Auth createAuthUri 端點發出 HTTP POST 要求,查看與特定電子郵件相關聯的所有供應商。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:createAuthUri?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
ID 字串 使用者的電子郵件地址
continueUri 字串 IdP 將使用者重新導向的 URI。在這個用途中,這只是目前的網址。
tenantId 字串 使用者登入的租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
allProviders 字串清單 使用者先前登入的供應商清單。
已註冊 布林值 電子郵件是否屬於現有帳戶

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:createAuthUri?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"identifier":"[user@example.com]","continueUri":"[http://localhost:8080/app]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應會包含與電子郵件相關聯的供應商清單。

回應範例

{
  "allProviders": [
    "password",
    "google.com"
  ],
  "registered": true
}

常見錯誤代碼

  • INVALID_EMAIL:電子郵件地址格式不正確。

傳送密碼重設電子郵件

您可以向 Auth getOobConfirmationCode 端點發出 HTTP POST 要求,傳送密碼重設電子郵件。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=[API_KEY]
選用標頭
屬性名稱 說明
X-Firebase-Locale 對應使用者語言代碼的語言代碼。傳遞此值後,系統會將傳送給使用者的密碼重設電子郵件本地化。
要求主體酬載
屬性名稱 類型 說明
requestType 字串 要傳回的 OOB 代碼類型。如要重設密碼,應為「PASSWORD_RESET」。
電子郵件 字串 使用者的電子郵件地址。
tenantId 字串 要求重設密碼的使用者租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
電子郵件 字串 使用者的電子郵件地址。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"requestType":"PASSWORD_RESET","email":"[user@example.com]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
 "email": "[user@example.com]"
}

常見錯誤代碼

  • EMAIL_NOT_FOUND:沒有與此 ID 相對應的使用者記錄。使用者可能已遭到刪除。

驗證密碼重設碼

您可以向 Auth resetPassword 端點發出 HTTP POST 要求,藉此驗證密碼重設碼。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
oobCode 字串 傳送給使用者電子郵件地址的電子郵件動作代碼,用於重設密碼。
tenantId 字串 要求重設密碼的使用者租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
電子郵件 字串 使用者的電子郵件地址。
requestType 字串 電子郵件動作代碼的類型。應為「PASSWORD_RESET」。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"oobCode":"[PASSWORD_RESET_CODE]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
  "email": "[user@example.com]",
  "requestType": "PASSWORD_RESET"
}

常見錯誤代碼

  • OPERATION_NOT_ALLOWED:這項專案已停用密碼登入功能。
  • EXPIRED_OOB_CODE:動作代碼已過期。
  • INVALID_OOB_CODE:動作代碼無效。如果代碼格式不正確、已過期或已使用,就可能發生這種情況。

確認重設密碼

您可以向 Auth resetPassword 端點發出 HTTP POST 要求,藉此套用密碼重設變更。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
oobCode 字串 傳送給使用者電子郵件地址的電子郵件動作代碼,用於重設密碼。
newPassword 字串 使用者的新密碼。
tenantId 字串 要求重設密碼的使用者租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
電子郵件 字串 使用者的電子郵件地址。
requestType 字串 電子郵件動作代碼的類型。應為「PASSWORD_RESET」。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"oobCode":"[PASSWORD_RESET_CODE]","newPassword":"[NEW_PASSWORD]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
  "email": "[user@example.com]",
  "requestType": "PASSWORD_RESET"
}

常見錯誤代碼

  • OPERATION_NOT_ALLOWED:這項專案已停用密碼登入功能。
  • EXPIRED_OOB_CODE:動作代碼已過期。
  • INVALID_OOB_CODE:動作代碼無效。如果代碼格式不正確、已過期或已使用,就可能發生這種情況。
  • USER_DISABLED:使用者帳戶已遭管理員停用。

變更電子郵件地址

您可以向 Auth setAccountInfo 端點發出 HTTP POST 要求,藉此變更使用者的電子郵件地址。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
選用標頭
屬性名稱 說明
X-Firebase-Locale 對應使用者語言代碼的語言代碼。傳遞這項值後,系統會將傳送給使用者的電子郵件變更撤銷內容本地化。
要求主體酬載
屬性名稱 類型 說明
idToken 字串 使用者的 Identity Platform ID 權杖。
電子郵件 字串 使用者的新電子郵件地址。
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。
回應酬載
屬性名稱 類型 說明
localId 字串 目前使用者的 uid。
電子郵件 字串 使用者的電子郵件地址。
passwordHash 字串 密碼的雜湊版本。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
idToken 字串 使用者的新 Identity Platform ID 權杖。
refreshToken 字串 Identity Platform 更新權杖。
expiresIn 字串 ID 權杖的到期秒數。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary \
'{"idToken":"[GCIP_ID_TOKEN]","email":"[user@example2.com]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與使用者相關聯的新 Identity Platform ID 權杖和重新整理權杖。

回應範例

{
  "localId": "tRcfmLH7o2...",
  "email": "[user@example2.com]",
  "passwordHash": "...",
  "providerUserInfo": [
    {
      "providerId": "password",
      "federatedId": "[user@example2.com]"
    }
  ],
  "idToken": "[NEW_ID_TOKEN]",
  "refreshToken": "[NEW_REFRESH_TOKEN]",
  "expiresIn": "3600"
}

常見錯誤代碼

  • EMAIL_EXISTS:電子郵件地址已由其他帳戶使用。
  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。

變更密碼

您可以向 Auth setAccountInfo 端點發出 HTTP POST 要求,藉此變更使用者的密碼。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 使用者的 Identity Platform ID 權杖。
密碼 字串 使用者的新密碼。
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。
回應酬載
屬性名稱 類型 說明
localId 字串 目前使用者的 uid。
電子郵件 字串 使用者的電子郵件地址。
passwordHash 字串 密碼的雜湊版本。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
idToken 字串 使用者的新 Identity Platform ID 權杖。
refreshToken 字串 Identity Platform 更新權杖。
expiresIn 字串 ID 權杖的到期秒數。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary \
'{"idToken":"[GCIP_ID_TOKEN]","password":"[NEW_PASSWORD]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與使用者相關聯的新 Identity Platform ID 權杖和重新整理權杖。

回應範例

{
  "localId": "tRcfmLH7o2...",
  "email": "[user@example.com]",
  "passwordHash": "...",
  "providerUserInfo": [
    {
      "providerId": "password",
      "federatedId": "[user@example.com]"
    }
  ],
  "idToken": "[NEW_ID_TOKEN]",
  "refreshToken": "[NEW_REFRESH_TOKEN]",
  "expiresIn": "3600"
}

常見錯誤代碼

  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。
  • WEAK_PASSWORD:密碼長度必須為 6 個字元以上。

更新設定檔

您可以向 Auth setAccountInfo 端點發出 HTTP POST 要求,藉此更新使用者的個人資料 (顯示名稱 / 相片網址)。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 使用者的 Identity Platform ID 權杖。
displayName 字串 使用者的新顯示名稱。
photoUrl 字串 使用者的新相片網址。
deleteAttribute 字串清單 要刪除的屬性清單,包括「DISPLAY_NAME」或「PHOTO_URL」。這會使這些值失效。
returnSecureToken 布林值 是否要傳回 ID 和重新整理權杖。
回應酬載
屬性名稱 類型 說明
localId 字串 目前使用者的 uid。
電子郵件 字串 使用者的電子郵件地址。
displayName 字串 使用者的新顯示名稱。
photoUrl 字串 使用者的新相片網址。
passwordHash 字串 密碼的雜湊版本。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
idToken 字串 使用者的新 Identity Platform ID 權杖。
refreshToken 字串 Identity Platform 更新權杖。
expiresIn 字串 ID 權杖的到期秒數。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary \
'{"idToken":"[ID_TOKEN]","displayName":"[NAME]","photoUrl":"[URL]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
  "localId": "tRcfmLH...",
  "email": "user@example2.com",
  "displayName": "John Doe",
  "photoUrl": "[http://localhost:8080/img1234567890/photo.png]",
  "passwordHash": "...",
  "providerUserInfo": [
    {
      "providerId": "password",
      "federatedId": "user@example2.com",
      "displayName": "John Doe",
      "photoUrl": "http://localhost:8080/img1234567890/photo.png"
    }
  ],
  "idToken": "[NEW_ID_TOKEN]",
  "refreshToken": "[NEW_REFRESH_TOKEN]",
  "expiresIn": "3600"
}

常見錯誤代碼

  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。

取得使用者資料

您可以向 Auth getAccountInfo 端點發出 HTTP POST 要求,取得使用者資料。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 帳戶的 Identity Platform ID 權杖。
回應酬載
屬性名稱 類型 說明
使用者 JSON 物件清單 與指定 Identity Platform ID 權杖相關聯的帳戶。詳情請參閱下文。
回應酬載 (users 陣列內容)
屬性名稱 類型 說明
localId 字串 目前使用者的 uid。
電子郵件 字串 帳戶的電子郵件地址。
emailVerified 布林值 帳戶的電子郵件是否已驗證。
displayName 字串 帳戶的顯示名稱。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
photoUrl 字串 帳戶的相片網址。
passwordHash 字串 密碼的雜湊版本。
passwordUpdatedAt 雙精度值 帳戶密碼上次變更的時間戳記,以毫秒為單位。
validSince 字串 以秒為單位的時間戳記,標示 Identity Platform ID 權杖的撤銷時間點。
已停用 布林值 帳戶是否已停用。
lastLoginAt 字串 帳戶上次登入的時間戳記,以毫秒為單位。
createdAt 字串 帳戶建立時間戳記 (以毫秒為單位)。
customAuth 布林值 帳戶是否已通過開發人員驗證。
tenantId 字串 使用者的租用戶 ID。只有在多用戶群架構中才會傳回。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"idToken":"[GCIP_ID_TOKEN]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應會包含與帳戶相關聯的所有使用者資訊。

回應範例

{
  "users": [
    {
      "localId": "ZY1rJK0...",
      "email": "user@example.com",
      "emailVerified": false,
      "displayName": "John Doe",
      "providerUserInfo": [
        {
          "providerId": "password",
          "displayName": "John Doe",
          "photoUrl": "http://localhost:8080/img1234567890/photo.png",
          "federatedId": "user@example.com",
          "email": "user@example.com",
          "rawId": "user@example.com",
          "screenName": "user@example.com"
        }
      ],
      "photoUrl": "https://lh5.googleusercontent.com/.../photo.jpg",
      "passwordHash": "...",
      "passwordUpdatedAt": 1.484124177E12,
      "validSince": "1484124177",
      "disabled": false,
      "lastLoginAt": "1484628946000",
      "createdAt": "1484124142000",
      "customAuth": false
    }
  ]
}

常見錯誤代碼

  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。
  • USER_NOT_FOUND:沒有與此 ID 對應的使用者記錄。使用者可能已遭到刪除。

您可以向 Auth setAccountInfo 端點發出 HTTP POST 要求,將電子郵件/密碼連結至目前的使用者。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 您要連結憑證的帳戶 Identity Platform ID 權杖。
電子郵件 字串 要連結至帳戶的電子郵件地址。
密碼 字串 帳戶的新密碼。
returnSecureToken 字串 是否傳回 ID 和重新整理權杖。一律應為 true。
回應酬載
屬性名稱 類型 說明
localId 字串 目前使用者的 uid。
電子郵件 字串 帳戶的電子郵件地址。
displayName 字串 帳戶的顯示名稱。
photoUrl 字串 帳戶的相片網址。
passwordHash 字串 密碼的雜湊版本。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
emailVerified 布林值 帳戶的電子郵件是否已驗證。
idToken 字串 使用者的新 Identity Platform ID 權杖。
refreshToken 字串 Identity Platform 更新權杖。
expiresIn 字串 ID 權杖的到期秒數。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary \
'{"idToken":"[ID_TOKEN]","email":"[user@example.com]","password":"[PASS]","returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

回應範例

{
  "localId": "huDwUz...",
  "email": "user@example.com",
  "displayName": "John Doe",
  "photoUrl": "https://lh5.googleusercontent.com/.../photo.jpg",
  "passwordHash": "...",
  "providerUserInfo": [
    {
      "providerId": "password",
      "federatedId": "user@example.com"
    }
  ],
  "idToken": "[ID_TOKEN]",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "emailVerified": false
}

常見錯誤代碼

  • CREDENTIAL_TOO_OLD_LOGIN_AGAIN:使用者的憑證已失效。使用者必須重新登入。
  • TOKEN_EXPIRED:使用者的憑證已失效。使用者必須重新登入。
  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。
  • WEAK_PASSWORD:密碼長度必須為 6 個字元以上。

您可以向 Auth verifyAssertion 端點發出 HTTP POST 要求,將 OAuth 憑證連結至使用者。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 您要連結憑證的帳戶 Identity Platform ID 權杖。
requestUri 字串 IdP 將使用者重新導向的 URI。
postBody 字串 包含 OAuth 憑證 (ID 權杖或存取權杖) 和發出憑證的供應商 ID。
returnSecureToken 布林值 是否傳回 ID 和重新整理權杖。應一律為 true。
returnIdpCredential 布林值 是否要強制在發生以下錯誤時傳回 OAuth 憑證:FEDERATED_USER_ID_ALREADY_LINKED 和 EMAIL_EXISTS。
回應酬載
屬性名稱 類型 說明
federatedId 字串 這個專屬 ID 可識別 ID 提供者帳戶。
providerId 字串 已連結的供應商 ID (例如 Google 供應商的「google.com」)。
localId 字串 已驗證使用者的 uid。
emailVerified 布林值 登入電子郵件是否已通過驗證。
電子郵件 字串 帳戶的電子郵件地址。
oauthIdToken 字串 OIDC ID 權杖 (如有)。
oauthAccessToken 字串 OAuth 存取權杖 (如有)。
oauthTokenSecret 字串 OAuth 1.0 憑證密鑰 (如有)。
rawUserInfo 字串 字串化 JSON 回應,其中包含與提供的 OAuth 憑證相對應的所有 IdP 資料。
firstName 字串 帳戶的名字。
lastName 字串 帳戶的姓氏。
fullName 字串 帳戶的全名。
displayName 字串 帳戶的顯示名稱。
photoUrl 字串 帳戶的相片網址。
idToken 字串 經過驗證的使用者所需的 Identity Platform ID 權杖。
refreshToken 字串 已驗證使用者的 Identity Platform 重新整理權杖。
expiresIn 字串 ID 權杖的到期秒數。

含有 OAuth ID 權杖的示例要求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"id_token=[GOOGLE_ID_TOKEN]&providerId=[google.com]","requestUri":"[http://localhost]","idToken":"[GCIP_ID_TOKEN]","returnIdpCredential":true,"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

含有 OAuth ID 權杖的範例回應

{
  "federatedId": "https://accounts.google.com/1234567890",
  "providerId": "google.com",
  "localId": "5xwsPCWYo...",
  "emailVerified": true,
  "email": "user@example.com",
  "oauthIdToken": "[GOOGLE_ID_TOKEN]",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "displayName": "John Doe",
  "idToken": "[ID_TOKEN]",
  "photoUrl": "https://lh5.googleusercontent.com/.../photo.jpg",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "rawUserInfo": "{\"updated_time\":\"2017-02-22T01:10:57+0000\",\"gender\":\"male\", ...}"
}

含有 OAuth 存取權杖的示例要求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=[facebook.com]","idToken":"[GCIP_ID_TOKEN]","requestUri":"[http://localhost]","returnIdpCredential":true,"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

含有 OAuth 存取權杖的範例回應

{
  "federatedId": "http://facebook.com/1234567890",
  "providerId": "facebook.com",
  "localId": "5xwsPCWYo...",
  "emailVerified": true,
  "email": "user@example.com",
  "oauthAccessToken": "[FACEBOOK_ACCESS_TOKEN]",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "displayName": "John Doe",
  "idToken": "[ID_TOKEN]",
  "photoUrl": "https://scontent.xx.fbcdn.net/v/...",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "rawUserInfo": "{\"updated_time\":\"2017-02-22T01:10:57+0000\",\"gender\":\"male\", ...}"
}

使用 Twitter OAuth 1.0 憑證的示例要求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"access_token=[TWITTER_ACCESS_TOKEN]&oauth_token_secret=[TWITTER_TOKEN_SECRET]&providerId=[twitter.com]","requestUri":"[http://localhost]","idToken":"[GCIP_ID_TOKEN]","returnIdpCredential":true,"returnSecureToken":true}'

成功的要求會以 200 OK HTTP 狀態碼表示。回應中包含與已驗證使用者相關聯的 Identity Platform ID 權杖和重新整理權杖。

使用 Twitter OAuth 1.0 憑證的範例回應

{
  "federatedId": "http://twitter.com/1234567890",
  "providerId": "twitter.com",
  "localId": "5xwsPCWYo...",
  "emailVerified": true,
  "email": "user@example.com",
  "oauthAccessToken": "[OAUTH_ACCESS_TOKEN]",
  "oauthTokenSecret": "[OAUTH_TOKEN_SECRET]",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "displayName": "John Doe",
  "idToken": "[ID_TOKEN]",
  "photoUrl": "http://abs.twimg.com/sticky/...",
  "refreshToken": "[REFRESH_TOKEN]",
  "expiresIn": "3600",
  "rawUserInfo": "{\"updated_time\":\"2017-02-22T01:10:57+0000\",\"gender\":\"male\", ...}"
}

常見錯誤代碼

  • OPERATION_NOT_ALLOWED:這個專案已停用對應的供應商。
  • INVALID_IDP_RESPONSE:提供的驗證憑證格式錯誤或已過期。
  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。
  • EMAIL_EXISTS:電子郵件地址已由其他帳戶使用。
  • FEDERATED_USER_ID_ALREADY_LINKED:這個憑證已與其他使用者帳戶建立關聯。

您可以向 Auth setAccountInfo 端點發出 HTTP POST 要求,將提供者與目前使用者取消連結。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 帳戶的 Identity Platform ID 權杖。
deleteProvider 字串清單 要取消連結的供應商 ID 清單,例如:'google.com'、'password' 等。
回應酬載
屬性名稱 類型 說明
localId 字串 目前使用者的 uid。
電子郵件 字串 帳戶的電子郵件地址。
displayName 字串 帳戶的顯示名稱。
photoUrl 字串 帳戶的相片網址。
passwordHash 字串 密碼的雜湊版本。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
emailVerified 布林值 帳戶的電子郵件是否已驗證。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"idToken":"[GCIP_ID_TOKEN]","deleteProvider":["[facebook.com]"]}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
  "localId": "huDwUz...",
  "email": "user@example.com",
  "displayName": "John Doe",
  "photoUrl": "https://lh5.googleusercontent.com/.../photo.jpg",
  "passwordHash": "...",
  "providerUserInfo": [
    {
      "providerId": "google.com",
      "federatedId": "1234567890",
      "displayName": "John Doe",
      "photoUrl": "https://lh5.googleusercontent.com/.../photo.jpg"
    },
    {
      "providerId": "password",
      "federatedId": "user@example.com"
    }
  ],
  "emailVerified": "true"
}

常見錯誤代碼

  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。

傳送電子郵件驗證

您可以向 Auth getOobConfirmationCode 端點發出 HTTP POST 要求,為目前使用者傳送電子郵件驗證。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=[API_KEY]
選用標頭
屬性名稱 說明
X-Firebase-Locale 對應使用者語言代碼的語言代碼。傳遞此值後,系統會將傳送給使用者的電子郵件驗證內容本地化。
要求主體酬載
屬性名稱 類型 說明
requestType 字串 要傳送的確認碼類型。應一律設為「VERIFY_EMAIL」。
idToken 字串 要驗證的使用者 Identity Platform ID 權杖。
回應酬載
屬性名稱 類型 說明
電子郵件 字串 帳戶的電子郵件地址。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"requestType":"VERIFY_EMAIL","idToken":"[GCIP_ID_TOKEN]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
  "email": "user@example.com"
}

常見錯誤代碼

  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。
  • USER_NOT_FOUND:沒有與此 ID 相對應的使用者記錄。使用者可能已遭到刪除。

確認電子郵件驗證

您可以向 Auth setAccountInfo 端點發出 HTTP POST 要求,確認電子郵件驗證碼。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
oobCode 字串 傳送至使用者電子郵件的動作代碼,用於電子郵件驗證。
tenantId 字串 驗證電子郵件的使用者租用戶 ID。僅用於多用戶群架構。
回應酬載
屬性名稱 類型 說明
電子郵件 字串 帳戶的電子郵件地址。
displayName 字串 帳戶的顯示名稱。
photoUrl 字串 帳戶的相片網址。
passwordHash 字串 密碼雜湊。
providerUserInfo JSON 物件清單 包含「providerId」和「federatedId」的所有已連結供應器物件清單。
emailVerified 布林值 帳戶的電子郵件是否已驗證。

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"oobCode":"[VERIFICATION_CODE]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。

回應範例

{
  "localId": "FhyStE...",
  "email": "user@example.com",
  "passwordHash": "...",
  "providerUserInfo": [
    {
      "providerId": "password",
      "federatedId": "user@example.com"
    }
  ]
}

常見錯誤代碼

  • EXPIRED_OOB_CODE:動作代碼已過期。
  • INVALID_OOB_CODE:動作代碼無效。如果代碼格式不正確、已過期或已使用,就可能發生這種情況。
  • USER_DISABLED:使用者帳戶已遭管理員停用。
  • EMAIL_NOT_FOUND:沒有與此 ID 相對應的使用者記錄。使用者可能已遭到刪除。

刪除帳戶

您可以向 Auth deleteAccount 端點發出 HTTP POST 要求,藉此刪除目前的使用者。

方法:POST

Content-Type: application/json

端點
https://identitytoolkit.googleapis.com/v1/accounts:delete?key=[API_KEY]
要求主體酬載
屬性名稱 類型 說明
idToken 字串 要刪除的使用者 Identity Platform ID 權杖。
回應酬載
屬性名稱 類型 說明

要求範例

curl 'https://identitytoolkit.googleapis.com/v1/accounts:delete?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"idToken":"[GCIP_ID_TOKEN]"}'

成功的要求會以 200 OK HTTP 狀態碼表示。

常見錯誤代碼

  • INVALID_ID_TOKEN:使用者的憑證已失效。使用者必須重新登入。
  • USER_NOT_FOUND:沒有與此 ID 相對應的使用者記錄。使用者可能已遭到刪除。

處理錯誤

以下是 Identity Platform 傳回的常見錯誤示例:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "invalid",
        "message": "CREDENTIAL_TOO_OLD_LOGIN_AGAIN"
      }
    ],
    "code": 400,
    "message": "CREDENTIAL_TOO_OLD_LOGIN_AGAIN"
  }
}

message 欄位取得錯誤代碼。