Firebase 身份验证 REST API

API使用

您可以通过 REST API 查询 Firebase Auth 后端。这可用于各种操作,例如创建新用户、登录现有用户以及编辑或删除这些用户。

在本文档中, API_KEY指的是 Web API 密钥,可以在管理控制台的项目设置页面上获取。

将自定义令牌交换为 ID 和刷新令牌

您可以通过向 Auth verifyCustomToken端点发出 HTTP POST请求,将自定义身份验证令牌交换为 ID 和刷新令牌。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=[API_KEY]
请求正文有效负载
物业名称类型描述
代币细绳Firebase Auth 自定义令牌,用于创建 ID 和刷新令牌对。
返回安全令牌布尔值是否返回 ID 和刷新令牌。应该永远是真的。
响应负载
物业名称类型描述
id令牌细绳从提供的自定义令牌生成的 Firebase 身份验证 ID 令牌。
刷新令牌细绳从提供的自定义令牌生成的 Firebase 身份验证刷新令牌。
过期日期在细绳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 状态代码指示。响应包含与自定义令牌关联的 Firebase ID 令牌和刷新令牌。

响应样本

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

常见错误代码

  • INVALID_CUSTOM_TOKEN:自定义令牌格式不正确或令牌由于某种原因无效(例如过期、签名无效等)
  • CREDENTIAL_MISMATCH:自定义令牌对应于不同的 Firebase 项目。

将刷新令牌交换为 ID 令牌

您可以通过向securetoken.googleapis.com端点发出 HTTP POST请求来刷新 Firebase ID 令牌。

方法:邮寄

内容类型: application/x-www-form-urlencoded

端点
https://securetoken.googleapis.com/v1/token?key=[API_KEY]
请求正文有效负载
物业名称类型描述
授予类型细绳刷新令牌的授予类型始终为“refresh_token”。
刷新令牌细绳Firebase 身份验证刷新令牌。
响应负载
物业名称类型描述
过期日期在细绳ID 令牌过期的秒数。
令牌类型细绳刷新令牌的类型,始终为“Bearer”。
刷新令牌细绳请求中提供的 Firebase Auth 刷新令牌或新的刷新令牌。
id_token细绳Firebase 身份验证 ID 令牌。
用户身份细绳与提供的 ID 令牌对应的 uid。
项目ID细绳您的 Firebase 项目 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 状态代码指示。响应包含新的 Firebase 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:未提供刷新令牌。

使用电子邮件/密码注册

您可以通过向 Auth signupNewUser端点发出 HTTP POST请求来创建新的电子邮件和密码用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]
请求正文有效负载
物业名称类型描述
电子邮件细绳供用户创建的电子邮件。
密码细绳供用户创建的密码。
返回安全令牌布尔值是否返回 ID 和刷新令牌。应该永远是真的。
响应负载
物业名称类型描述
id令牌细绳新创建用户的 Firebase 身份验证 ID 令牌。
电子邮件细绳新创建用户的电子邮件。
刷新令牌细绳新创建用户的 Firebase 身份验证刷新令牌。
过期日期在细绳ID 令牌过期的秒数。
本地ID细绳新创建用户的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 状态代码指示。响应包含与新帐户关联的 Firebase 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请求,使用电子邮件和密码登录用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]
请求正文有效负载
物业名称类型描述
电子邮件细绳用户登录时使用的电子邮件。
密码细绳帐户的密码。
返回安全令牌布尔值是否返回 ID 和刷新令牌。应该永远是真的。
响应负载
物业名称类型描述
id令牌细绳经过身份验证的用户的 Firebase 身份验证 ID 令牌。
电子邮件细绳经过身份验证的用户的电子邮件。
刷新令牌细绳经过身份验证的用户的 Firebase 身份验证刷新令牌。
过期日期在细绳ID 令牌过期的秒数。
本地ID细绳经过身份验证的用户的 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 状态代码指示。响应包含与现有电子邮件/密码帐户关联的 Firebase ID 令牌和刷新令牌。

响应样本

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

常见错误代码

  • EMAIL_NOT_FOUND:没有与该标识符对应的用户记录。该用户可能已被删除。
  • INVALID_PASSWORD:密码无效或用户没有密码。
  • USER_DISABLED:用户帐户已被管理员禁用。

匿名登录

您可以通过向 Auth signupNewUser端点发出 HTTP POST请求来匿名登录用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API_KEY]
请求正文有效负载
物业名称类型描述
返回安全令牌布尔值是否返回 ID 和刷新令牌。应该永远是真的。
响应负载
物业名称类型描述
id令牌细绳新创建用户的 Firebase 身份验证 ID 令牌。
电子邮件细绳由于用户是匿名的,因此该字段应该为空。
刷新令牌细绳新创建用户的 Firebase 身份验证刷新令牌。
过期日期在细绳ID 令牌过期的秒数。
本地ID细绳新创建用户的uid。

样品请求

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

成功的请求由200 OK HTTP 状态代码指示。响应包含与匿名用户关联的 Firebase ID 令牌和刷新令牌。

响应样本

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

常见错误代码

  • OPERATION_NOT_ALLOWED:此项目禁用匿名用户登录。

使用 OAuth 凭据登录

您可以通过向 Auth verifyAssertion端点发出 HTTP POST请求,使用 OAuth 凭证登录用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]
请求正文有效负载
物业名称类型描述
请求Uri细绳IDP 将用户重定向回的 URI。
帖子正文细绳包含 OAuth 凭据(ID 令牌或访问令牌)和颁发该凭据的提供商 ID。
返回安全令牌布尔值是否返回 ID 和刷新令牌。应该永远是真的。
返回Idp凭据布尔值是否在出现以下错误时强制返回 OAuth 凭据:FEDERATED_USER_ID_ALREADY_LINKED 和 EMAIL_EXISTS。
响应负载
物业名称类型描述
联邦ID细绳唯一 ID 标识 IdP 帐户。
提供者ID细绳链接的提供商 ID(例如,Google 提供商为“google.com”)。
本地ID细绳经过身份验证的用户的 uid。
电子邮件已验证布尔值登录邮箱是否经过验证。
电子邮件细绳帐户的电子邮件。
oauthIdToken细绳OIDC ID 令牌(如果可用)。
oauthAccessToken细绳OAuth 访问令牌(如果可用)。
oauthTokenSecret细绳OAuth 1.0 令牌密钥(如果可用)。
原始用户信息细绳字符串化 JSON 响应,包含与所提供的 OAuth 凭据对应的所有 IdP 数据。
细绳帐户的名字。
细绳帐户的姓氏。
全名细绳帐户的全名。
显示名称细绳帐户的显示名称。
照片网址细绳帐户的照片 URL。
id令牌细绳经过身份验证的用户的 Firebase 身份验证 ID 令牌。
刷新令牌细绳经过身份验证的用户的 Firebase 身份验证刷新令牌。
过期日期在细绳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]","returnIdpCredential":true,"returnSecureToken":true}'

成功的请求由200 OK HTTP 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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请求来查看与指定电子邮件关联的所有提供程序。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:createAuthUri?key=[API_KEY]
请求正文有效负载
物业名称类型描述
标识符细绳用户的电子邮件地址
继续Uri细绳IDP 将用户重定向回的 URI。对于此用例,这只是当前 URL。
响应负载
物业名称类型描述
所有提供商字符串列表用户之前登录过的提供商列表。
挂号的布尔值该电子邮件是否适用于现有帐户

样品请求

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请求来发送密码重置电子邮件。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=[API_KEY]
可选标头
物业名称描述
X-Firebase-区域设置与用户区域设置对应的语言代码。传递此参数将本地化发送给用户的密码重置电子邮件。
请求正文有效负载
物业名称类型描述
请求类型细绳要返回的 OOB 代码类型。密码重置应为“PASSWORD_RESET”。
电子邮件细绳用户的电子邮件地址。
响应负载
物业名称类型描述
电子邮件细绳用户的电子邮件地址。

样品请求

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:没有与该标识符对应的用户记录。该用户可能已被删除。

验证密码重置代码

您可以通过向 Auth resetPassword端点发出 HTTP POST请求来验证密码重置代码。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=[API_KEY]
请求正文有效负载
物业名称类型描述
出库代码细绳发送到用户电子邮件以重置密码的电子邮件操作代码。
响应负载
物业名称类型描述
电子邮件细绳用户的电子邮件地址。
请求类型细绳电子邮件操作代码的类型。应为“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请求来应用密码重置更改。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=[API_KEY]
请求正文有效负载
物业名称类型描述
出库代码细绳发送到用户电子邮件以重置密码的电子邮件操作代码。
新密码细绳用户的新密码。
响应负载
物业名称类型描述
电子邮件细绳用户的电子邮件地址。
请求类型细绳电子邮件操作代码的类型。应为“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请求来更改用户的电子邮件。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
可选标头
物业名称描述
X-Firebase-区域设置与用户区域设置对应的语言代码。传递此参数将本地化发送给用户的电子邮件更改撤销。
请求正文有效负载
物业名称类型描述
id令牌细绳用户的 Firebase 身份验证 ID 令牌。
电子邮件细绳用户的新电子邮件。
返回安全令牌布尔值是否返回 ID 和刷新令牌。
响应负载
物业名称类型描述
本地ID细绳当前用户的uid。
电子邮件细绳用户的电子邮件地址。
密码哈希值细绳密码的哈希版本。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
id令牌细绳用户的新 Firebase 身份验证 ID 令牌。
刷新令牌细绳Firebase 身份验证刷新令牌。
过期日期在细绳ID 令牌过期的秒数。

样品请求

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

成功的请求由200 OK HTTP 状态代码指示。响应包含与用户关联的新 Firebase 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请求来更改用户的密码。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳用户的 Firebase 身份验证 ID 令牌。
密码细绳用户的新密码。
返回安全令牌布尔值是否返回 ID 和刷新令牌。
响应负载
物业名称类型描述
本地ID细绳当前用户的uid。
电子邮件细绳用户的电子邮件地址。
密码哈希值细绳密码的哈希版本。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
id令牌细绳用户的新 Firebase 身份验证 ID 令牌。
刷新令牌细绳Firebase 身份验证刷新令牌。
过期日期在细绳ID 令牌过期的秒数。

样品请求

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

成功的请求由200 OK HTTP 状态代码指示。响应包含与用户关联的新 Firebase 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请求来更新用户的个人资料(显示名称/照片 URL)。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳用户的 Firebase 身份验证 ID 令牌。
显示名称细绳用户的新显示名称。
照片网址细绳用户的新照片网址。
删除属性字符串列表要删除的属性列表“DISPLAY_NAME”或“PHOTO_URL”。这将使这些值无效。
返回安全令牌布尔值是否返回 ID 和刷新令牌。
响应负载
物业名称类型描述
本地ID细绳当前用户的uid。
电子邮件细绳用户的电子邮件地址。
显示名称细绳用户的新显示名称。
照片网址细绳用户的新照片网址。
密码哈希值细绳密码的哈希版本。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
id令牌细绳用户的新 Firebase 身份验证 ID 令牌。
刷新令牌细绳Firebase 身份验证刷新令牌。
过期日期在细绳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请求来获取用户数据。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳帐户的 Firebase ID 令牌。
响应负载
物业名称类型描述
用户JSON 对象列表与给定 Firebase ID 令牌关联的帐户。请检查以下内容以了解更多详细信息。
响应负载( users数组内容)
物业名称类型描述
本地ID细绳当前用户的uid。
电子邮件细绳帐户的电子邮件。
电子邮件已验证布尔值帐户的电子邮件是否已验证。
显示名称细绳帐户的显示名称。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
照片网址细绳帐户的照片 URL。
密码哈希值细绳密码的哈希版本。
密码更新时间双倍的上次更改帐户密码的时间戳(以毫秒为单位)。
有效期自细绳时间戳(以秒为单位),标记边界,在此之前 Firebase ID 令牌被视为已撤销。
残疾人布尔值帐户是否被禁用。
上次登录时间细绳帐户上次登录的时间戳(以毫秒为单位)。
创建于细绳创建帐户的时间戳(以毫秒为单位)。
自定义验证布尔值帐号是否经过开发者认证。

样品请求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY]' \
-H 'Content-Type: application/json' --data-binary '{"idToken":"[FIREBASE_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:没有与该标识符对应的用户记录。该用户可能已被删除。

您可以通过向 Auth setAccountInfo端点发出 HTTP POST请求,将电子邮件/密码链接到当前用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳您尝试将凭证链接到的帐户的 Firebase ID 令牌。
电子邮件细绳链接到帐户的电子邮件。
密码细绳帐户的新密码。
返回安全令牌细绳是否返回 ID 和刷新令牌。应该永远是真的。
响应负载
物业名称类型描述
本地ID细绳当前用户的uid。
电子邮件细绳帐户的电子邮件。
显示名称细绳帐户的显示名称。
照片网址细绳帐户的照片 URL。
密码哈希值细绳密码的哈希版本。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
电子邮件已验证布尔值帐户的电子邮件是否已验证。
id令牌细绳用户的新 Firebase 身份验证 ID 令牌。
刷新令牌细绳Firebase 身份验证刷新令牌。
过期日期在细绳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 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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 凭证链接到用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳您尝试将凭证链接到的帐户的 Firebase ID 令牌。
请求Uri细绳IDP 将用户重定向回的 URI。
帖子正文细绳包含 OAuth 凭据(ID 令牌或访问令牌)和颁发该凭据的提供商 ID。
返回安全令牌布尔值是否返回 ID 和刷新令牌。应该永远是真的。
返回Idp凭据布尔值是否在出现以下错误时强制返回 OAuth 凭据:FEDERATED_USER_ID_ALREADY_LINKED 和 EMAIL_EXISTS。
响应负载
物业名称类型描述
联邦ID细绳唯一 ID 标识 IdP 帐户。
提供者ID细绳链接的提供商 ID(例如,Google 提供商为“google.com”)。
本地ID细绳经过身份验证的用户的 uid。
电子邮件已验证布尔值登录邮箱是否经过验证。
电子邮件细绳帐户的电子邮件。
oauthIdToken细绳OIDC ID 令牌(如果可用)。
oauthAccessToken细绳OAuth 访问令牌(如果可用)。
oauthTokenSecret细绳OAuth 1.0 令牌密钥(如果可用)。
原始用户信息细绳字符串化 JSON 响应,包含与所提供的 OAuth 凭据对应的所有 IdP 数据。
细绳帐户的名字。
细绳帐户的姓氏。
全名细绳帐户的全名。
显示名称细绳帐户的显示名称。
照片网址细绳帐户的照片 URL。
id令牌细绳经过身份验证的用户的 Firebase 身份验证 ID 令牌。
刷新令牌细绳经过身份验证的用户的 Firebase 身份验证刷新令牌。
过期日期在细绳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":"[FIREBASE_ID_TOKEN]","returnIdpCredential":true,"returnSecureToken":true}'

成功的请求由200 OK HTTP 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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":"[FIREBASE_ID_TOKEN]","requestUri":"[http://localhost]","returnIdpCredential":true,"returnSecureToken":true}'

成功的请求由200 OK HTTP 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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":"[FIREBASE_ID_TOKEN]","returnIdpCredential":true,"returnSecureToken":true}'

成功的请求由200 OK HTTP 状态代码指示。响应包含与经过身份验证的用户关联的 Firebase 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请求来取消提供程序与当前用户的链接。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳帐户的 Firebase ID 令牌。
删除提供者字符串列表要取消链接的提供商 ID 列表,例如:“google.com”、“密码”等。
响应负载
物业名称类型描述
本地ID细绳当前用户的uid。
电子邮件细绳帐户的电子邮件。
显示名称细绳帐户的显示名称。
照片网址细绳帐户的照片 URL。
密码哈希值细绳密码的哈希版本。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
电子邮件已验证布尔值帐户的电子邮件是否已验证。

样品请求

curl 'https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"idToken":"[FIREBASE_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请求来发送当前用户的电子邮件验证。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key=[API_KEY]
可选标头
物业名称描述
X-Firebase-区域设置与用户区域设置对应的语言代码。通过此操作将本地化发送给用户的电子邮件验证。
请求正文有效负载
物业名称类型描述
请求类型细绳要发送的确认码的类型。应始终为“VERIFY_EMAIL”。
id令牌细绳要验证的用户的 Firebase ID 令牌。
响应负载
物业名称类型描述
电子邮件细绳帐户的电子邮件。

样品请求

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

成功的请求由200 OK HTTP 状态代码指示。

响应样本

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

常见错误代码

  • INVALID_ID_TOKEN:用户的凭据不再有效。用户必须重新登录。
  • USER_NOT_FOUND:没有与该标识符对应的用户记录。该用户可能已被删除。

确认电子邮件验证

您可以通过向 Auth setAccountInfo端点发出 HTTP POST请求来确认电子邮件验证码。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:update?key=[API_KEY]
请求正文有效负载
物业名称类型描述
出库代码细绳操作代码发送到用户的电子邮件以进行电子邮件验证。
响应负载
物业名称类型描述
电子邮件细绳帐户的电子邮件。
显示名称细绳帐户的显示名称。
照片网址细绳帐户的照片 URL。
密码哈希值细绳密码哈希。
提供者用户信息JSON 对象列表包含“providerId”和“federatedId”的所有链接提供程序对象的列表。
电子邮件已验证布尔值帐户的电子邮件是否已验证。

样品请求

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:没有与该标识符对应的用户记录。该用户可能已被删除。

删除帐户

您可以通过向 Auth deleteAccount端点发出 HTTP POST请求来删除当前用户。

方法:邮寄

内容类型: application/json

端点
https://identitytoolkit.googleapis.com/v1/accounts:delete?key=[API_KEY]
请求正文有效负载
物业名称类型描述
id令牌细绳要删除的用户的 Firebase ID 令牌。
响应负载
物业名称类型描述

样品请求

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

成功的请求由200 OK HTTP 状态代码指示。

常见错误代码

  • INVALID_ID_TOKEN:用户的凭据不再有效。用户必须重新登录。
  • USER_NOT_FOUND:没有与该标识符对应的用户记录。该用户可能已被删除。

Firebase 身份验证模拟器

Firebase 本地模拟器套件包含一个身份验证模拟器,可用于身份验证流程的本地原型设计和测试。模拟器公开以下 REST 端点。

清除用户帐户

删除指定项目中的所有帐户,无论状态如何。

方法:删除

端点

请注意, 9099是身份验证模拟器的默认端口。检查终端输出以了解正在使用的实际端口。

http://localhost:9099/emulator/v1/projects/{project-id}/accounts

获取模拟器配置

获取指定项目的模拟器特定配置。

方法:获取

端点

请注意, 9099是身份验证模拟器的默认端口。检查终端输出以了解正在使用的实际端口。

http://localhost:9099/emulator/v1/projects/{project-id}/config
响应负载
物业名称类型描述
登入目的包含单个密钥的登录配置对象, allowDuplicateEmails (布尔值)。

补丁模拟器配置

更新指定项目的模拟器特定配置。

方法:补丁

端点

请注意, 9099是身份验证模拟器的默认端口。检查终端输出以了解正在使用的实际端口。

内容类型: application/json

http://localhost:9099/emulator/v1/projects/{project-id}/config
请求正文有效负载
物业名称类型描述
登入目的所需的带有单键的登录配置对象, allowDuplicateEmails (布尔值)。
响应负载
物业名称类型描述
登入目的具有单键的请求后登录配置对象, allowDuplicateEmails (布尔值)。

检索带外验证码

如果您正在测试的身份验证流程通常会生成带外代码(例如,电子邮件验证代码、密码重置代码),则模拟器会在内部存储这些代码,直到使用它们。

方法:获取

端点

请注意, 9099是身份验证模拟器的默认端口。检查终端输出以了解正在使用的实际端口。

http://localhost:9099/emulator/v1/projects/{project-id}/oobCodes
响应负载
物业名称类型描述
OOB代码大批包含所有待处理确认代码详细信息的对象数组。每个对象包含email (字符串)、 oobCode (字符串)、 oobLink (字符串)和requestType (字符串)

获取短信验证码

如果您正在测试电话/短信身份验证流程,模拟器会在内部存储此类短信代码,直到使用它们为止。

方法:获取

端点

请注意, 9099是身份验证模拟器的默认端口。检查终端输出以了解正在使用的实际端口。

http://localhost:9099/emulator/v1/projects/{project-id}/verificationCodes
响应负载
物业名称类型描述
验证码大批包含所有待处理验证码详细信息的对象数组。每个对象包含phoneNumber (字符串)和sessionCode (字符串)。

错误响应

错误响应格式

每当后端服务器针对上述任何 API 返回错误时,响应都将具有以下格式。

响应样本

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

错误代码是从消息字段中获取的。以上所有错误代码均指消息字段内容。