Skip to content

获取用户信息

通过【构造授权链接】获得参数code、state后,则可以使用state参数获取用户相关信息,从而实现登录流程

注意

获取用户信息需要通过三方系统服务器发起请求,前端页面发起请求可能导致client_secret参数泄露

假设参数如下

  • 本平台地址:https://apaas.0codepaas.com
  • code: zizemPnMfwG0P7
  • client_id:zl3SNfZfcOG0P1
  • client_secret:zhn6U0hl0gS0GK

1.获取用户信息授权凭证

三方系统服务器的接口接收到code后,可以通过以下方式获取access_token

1.1 方式1(标准方式)

当前方式为RFC 6749的标准方式,绝大部分的三方平台都支持此方式

示例代码

bash
POST /api/account/oauth2/user_access_token HTTP/1.1
Host: https://apaas.0codepaas.com
Authorization: Basic emwzU05mWmZjT0cwUDE6emhuNlUwaGwwZ1MwR0s=
Content-Type: application/x-www-form-urlencoded

{
  "grant_type": "authorization_code",
  "code": "zizemPnMfwG0P7"
}

示例代码说明


Headers:

  • Authorization: 基于client_id:client_secretBase64结果

    例如通过JS实现:Buffer.from('zl3SNfZfcOG0P1:zhn6U0hl0gS0GK').toString('base64')

  • Content-Type: 固定值:application/x-www-form-urlencoded

Body:

  • grant_type: 固定值:authorization_code
  • code: 通过构造授权链接获得参数的code参数

以上接口请求成功后,返回以下结构:

bash
{
    "access_token": "2YotnFZFEjr1zCsicMWpAA", # 个人信息访问凭证
    "expires_in": 3600, # 过期时间,单位秒
    "scope": "profile", # 授权范围
    "token_type": "Bearer", # 凭证类型
}

1.2 方式2

当前方式采用json请求的方式(非标准请求方式)

示例代码

bash
POST /api/account/oauth2/user_access_token HTTP/1.1
Host: https://apaas.0codepaas.com
Content-Type: application/json

{
    "grant_type": "authorization_code",
    "code": "zizemPnMfwG0P7",
    "client_id": "zl3SNfZfcOG0P1",
    "client_secret": "zhn6U0hl0gS0GK"
}

示例代码说明


Headers:

  • Content-Type: 固定值:application/json

Body:

  • grant_type: 固定值:authorization_code
  • code: 通过构造授权链接获得参数的code参数
  • client_id: 三方应用的:client_id
  • client_secret: 三方应用的:client_secret

以上接口请求成功后,返回以下结构:

bash
{
    "access_token": "2YotnFZFEjr1zCsicMWpAA", # 个人信息访问凭证
    "expires_in": 3600, # 过期时间,单位秒
    "scope": "profile", # 授权范围
    "token_type": "Bearer", # 凭证类型
}

2.通过凭证获取用户信息

当前方式为RFC 6749的标准方式,绝大部分的三方平台都支持此方式

示例代码

bash
GET /api/account/oauth2/user_info HTTP/1.1
Host: https://apaas.0codepaas.com
Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA

示例代码说明


Headers:

  • Authorization: 格式为:Bearer <access_token>

    access_token步骤1中获取到个人信息访问凭证


以上接口请求成功后,返回以下结构:

bash
{
    "accountName": "custom001", # 登录账号
    "departmentIds": ["NiHGJyKozq06j", "bLKj9cG8SO06Z"], # 成员部门(部门ID列表)
    "memberId": "RNwrUVJLqy04F", # 成员ID
    "memberName": "18000000000", # 成员姓名
    "memberPhone": "18000000000", # 成员手机
    "memberEmail": "example@123.com", # 成员邮箱
    "jobNumber": "001", # 成员工号
}

注意

以下字段需要在组织管理 → 设置 → 三方应用 → 成员敏感信息位置,配置启用后才会返回

  • 登录账号
  • 成员部门
  • 成员手机
  • 成员邮箱