# 获取user_access_token(用户token)
分为两种途径获取
# 登录小程序
小程序可以通过BOSSHI开放平台提供的登录能力,获取到BOSSHI的用户身份标识。依据该标识,小程序应用能快速建立属于自己的用户体系。
# 登录流程的时序图
# 登录步骤
- 应用调用开放平台提供的登录API: bz.login,获取用户临时的登录凭证code。
- 应用后端服务调用登录校验API: code2session,验证 code 合法性, 获取到用户身份,含user_access_token。
- 应用后端设置应用自身的登录态。
# 第三方网站免登
操作步骤
- 创建应用
- 配置应用重定向 URL
- 请求身份验证
- 获取登录预授权码
- 获取用户身份
- 获取用户信息
- 刷新access_token
# 概述
身份验证为应用 web 系统提供了获取正在访问用户BOSSHI身份的能力,便于应用 web 系统构建登录流程。
# 整体流程
第一步: 网页后端发现用户未登录, 请求身份验证;
第二步: 用户登录后,开放平台生成登录预授权码,302跳转至重定向地址;
第三步: 网页后端调用 获取登录用户身份校验登录预授权码合法性,获取到用户身份;
第四步: 如需其他用户信息,网页后端可调用 获取用户信息(身份验证)。
# 浏览器内网页登录
BOSSHI客户端内,无需用户进行扫码登录或账号密码登录。
# 示例
# 1. 创建应用
进入 开发者后台,点击「创建自建应用」,获取 app_id 和 app_secret。
# 2. 配置应用重定向 URL
在应用的「安全域名」配置中添加重定向 URL,例如 https://hi-open.zhipin.cn/document。通过配置重定向 URL ,应用在用户登录完成后利用用户登录的预授权码调用 获取登录用户身份 接口,若未配置或者配置不正确开放平台会提示请求非法。
# 3. 请求身份验证
根据 请求身份验证接口说明组装请求 URL,跳转至该URL,开启身份验证流程。特别地,redirect_uri 参数需要经过 URLEncode 处理,例如:
https://hi-open.zhipin.com/open-apis/authen/index?app_id=bli_9dff7f6ae02ad104&redirect_uri=https%3a%2f%2fhi-open.zhipin.com%2fdocument%2fuQjL04CN%2fucDOz4yN4MjL3gzM&state=RANDOMSTATE
# 4. 获取登录预授权码
在上一步骤中,用户完成登录后(扫码登录或账号登录),开放平台会将 code 作为参数拼接在 redirect_uri 并重定向请求该地址,如下所示:
https://hi-open.zhipin.com/document/uQjL04CN%2fucDOz4yN4MjL3gzM?code={AuthorizationCode}
# 5. 获取用户身份
本步骤在Postman上请求登录身份验证接口(详见 获取登录用户身份),用 code 换取用户信息、access_token、refresh_token。请注意,code 有效期为5分钟,且只能使用一次。
请求头 :
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Authorization | string | 是 | app_access_token 值格式 :"Bearer access_token " 示例值 :"Bearer b-7f1bcd13fc57d46bac21793a18e560" 想了解更多:请查询API访问凭证概述 |
Content-Type | string | 是 | 固定值 :"application/json; charset=utf-8" |
请求 Body :
{
"code" : "xMSldislSkdK"
}
2
3
返回 Body :
{
"code": 0,
"traceId": "_Ao59UOIBLPCeAAu",
"msg":"success",
"data": {
"access_token": "u-6U1SbDiM6XIH2DcTCPyeub",
"avatar_url": "hi.zhipin.com/avatar/icon",
"avatar_thumb": "hi.zhipin.com/avatar/icon_thumb",
"avatar_middle": "hi.zhipin.com/avatar/icon_middle",
"avatar_big": "hi.zhipin.com/avatar/icon_big",
"expires_in": 7140,
"name": "zhangsan",
"en_name": "Three Zhang",
"open_id":"ou-caecc734c2e3328a62489fe0648c4b98779515d3",
"tenant_key": "736588c92lxf175d",
"refresh_expires_in": 2591940,
"refresh_token": "ur-t9HHgRCjMqGqIU9v05Zhos",
"token_type": "Bearer"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 6. 获取用户信息
上一步骤中将会返回用户 access_token 和 refresh_token,并有对应的有效时长字段返回。利用步骤5中获取的access_token 获取用户信息(身份验证),敏感信息在获取企业授权后才返回。
# 7. 刷新access_token
获取的access_token和refresh_token均存在有效期,前者有效期较短,后者较长。在access_token过期后,可根据refresh_token调用 刷新 access_token获取新的 access_token 和 refresh_token,新 access_token 和 refresh_token 有效期与初次生成一致。若刷新失败,可在2小时内重试。