跳转至

UserInfo

Authany 提供了一个 UserInfo 端点,供您的客户端应用发送请求以获取当前已通过身份验证用户的信息。当前用户是指请求中所包含访问令牌的所有者。

以下是 UserInfo 端点的路径:

/oauth2/userinfo

该端点的完整 URL 示例如下:https://your-project.authanyid.com/oauth2/userinfo。请将其中的「your-project.authanyid.com」替换为您 Authany 项目对应的正确主机名。

您也可以在 Authany 管理台的 应用 > [您的应用] 中,找到您 Authany OIDC 客户端应用对应 UserInfo 端点的完整 URL。

如果您使用的是任意一款 Authany SDK,只需调用一个方法即可从 UserInfo 端点请求数据。例如,在 JavaScript Authany SDK 中,fetchUserInfo() 方法会返回当前用户的信息。您可以在这里了解更多其他 SDK 的信息。

以下代码展示了 UserInfo 端点 JSON 响应中通常包含的结构和部分信息示例。

{
    "custom_attributes": {},
    "email": "user@gmail.com",
    "email_verified": true,
    "family_name": "John",
    "gender": "male",
    "given_name": "Doe",
    "phone_number": "0805551112",
    "phone_number_verified": true,
    "https://authgear.com/claims/user/identities": [
      {
        "type": "login_id",
        "created_at": "2025-06-04T10:50:00.000000Z",
        "updated_at": "2025-06-04T10:50:00.000000Z",
        "login_id_key": "email",
        "login_id_type": "email"
      },
      {
        "type": "oauth",
        "created_at": "2025-06-04T10:52:00.000000Z",
        "updated_at": "2025-06-04T10:52:00.000000Z",
        "oauth_provider_type": "google",
        "oauth_provider_alias": "google"
      }
    ],
    "https://authgear.com/claims/user/authenticators": [
      {
        "created_at": "2025-06-04T10:50:00.00000Z",
        "updated_at": "2025-06-04T10:50:00.00000Z",
        "type": "oob_otp_email",
        "kind": "primary"
      },
      {
        "created_at": "2025-06-04T10:51:00.00000Z",
        "updated_at": "2025-06-04T10:51:00.00000Z",
        "type": "password",
        "kind": "primary"
      }
    ],
    "https://authgear.com/claims/user/can_reauthenticate": true,
    "https://authgear.com/claims/user/is_anonymous": false,
    "https://authgear.com/claims/user/is_verified": true,
    "sub": "e3079029-f123-4a56-78b9-c0de12f3a4af",
    "updated_at": 1694947082,
    "x_web3": {
        "accounts": []
    }
}

该端点既可以返回 Authany 定义的标准属性,也可以返回您为应用定义的自定义属性。

以下部分将说明各个标准属性,并给出部分自定义属性的示例。

Standard Attributes

  • email:与当前用户账号关联的邮箱地址。
  • email_verified:一个布尔值,表示用户邮箱当前的验证状态。
  • family_name:当前用户的姓氏。
  • given_name:当前用户的名字。
  • gender:保存当前用户设置的性别值(male、female 或其他字符串)。
  • sub:sub 是 "subject" 的缩写,是 OIDC 中的标准字段。其值是 Authany 为用户生成的唯一 ID。您可以使用该用户 ID 生成一个用户节点 ID,然后在 Admin API 中用它来查询用户或执行 mutation。
  • https://authgear.com/claims/user/identities:该字段包含一个与用户关联的身份(identity)数组。每个元素都固定包含:
  • type:身份类型 —— login_id、oauth、passkey、biometric、anonymous、siwe 或 ldap
  • created_at:身份创建的时间戳
  • updated_at:身份最后一次更新的时间戳

根据 type 的不同,还会包含以下附加字段: * 对于 login_id:login_id_key(配置的键名,例如 "email")和 login_id_type(解析出的类型:"email"、"phone" 或 "username") * 对于 oauth:oauth_provider_type(例如 "google")和 oauth_provider_alias(配置的别名) * https://authgear.com/claims/user/authenticators:该字段包含一个数组,记录了用户拥有的验证器(authenticator)信息。 * created_at:验证器创建的时间戳 * updated_at:验证器最后一次更新的时间戳 * type:验证器类型,可能的取值有 oob_otp_sms、oob_otp_email、password、totp * kind:primary(主要)或 secondary(次要)验证器 * https://authgear.com/claims/user/can_reauthenticate:该字段包含一个布尔值,如果该用户可以执行重新身份验证则为 true,否则为 false。 * https://authgear.com/claims/user/is_anonymous:如果当前用户是匿名用户,返回 true。 * https://authgear.com/claims/user/is_verified:该字段包含一个布尔值,如果当前用户已验证邮箱则为 true,否则为 false。 * phone_number:与当前用户账号关联的手机号。 * phone_number_verified:如果关联的手机号已验证,返回 true,否则返回 false。 * picture:包含用户头像照片的 URL。 * updated_at:返回用户资料最后一次更新的日期和时间。 * custom_attributes:该字段包含一个对象,其中包含您定义的所有自定义属性。 * x_web3:已弃用 —— 该字段包含一个与已弃用的 web3 支持相关的详情对象。

注意:上面的列表并未穷尽 UserInfo 端点可能返回的所有字段。此外,对当前用户未定义的字段不会出现在响应中。例如,如果用户账号未关联任何手机号,响应的 JSON 中将不包含 phone_number 字段。

Custom Attributes

如上一节所述,您的自定义属性会包含在 JSON 响应 custom_attributes 字段下的一个对象中。

您可以在 Authany 管理台的 用户资料 > 自定义属性 中设置自定义属性。

如果我们为 passport_number 添加一个新的自定义属性,UserInfo 端点的响应将如下所示:

{
    "custom_attributes": {
        "passport_number": "A123456"
    },
    "email": "user@gmail.com",
    "email_verified": true,
    "family_name": "John",
    "gender": "male",
    "given_name": "Doe"
}