网页授权登录
概述
轻推提供了基于OAuth的授权登录方式,当用户在轻推客户端中访问轻应用/订阅号应用网页时,开发者可以通过轻推身份验证机制来获取用户信息,从而免去登录环节,实现自动登录。
轻应用/订阅号中的URL链接(包括消息中的链接、自定义菜单以及轻应用入口地址),均可以通过身份验证接口来获取用户的身份信息。
注意: 轻推的身份验证仅仅只提供在轻推客户端打开网页时可以获取轻推用户的身份信息,登录到其它独立的Web系统的业务逻辑,需要开发者自行完成。
操作步骤
轻推的授权登录不仅涉及接口的调用,还需要轻应用/订阅号管理员在轻推管理后台进行安全域名和网页授权登录链接的配置,请参照如下步骤操作。
第一步:配置安全域名
安全域名,即从轻推客户端中访问企业或其它Web系统的URL域名,为保证域名的可信,需要开发者先到轻推轻应用/订阅号管理后台正确配置安全域名。
安全域名填写规范
- 安全域名处填写的是域名(是一个字符串),而不是URL,因此请勿加
http://
等协议头; - 安全域名配置规范为一级域名,比如需要网页授权的域名为:cisdi.com.cn,配置以后此域名下面的页面
http://www.cisdi.com.cn/index.html
、http://test.cisdi.com.cn/login.html
都可以通过安全验证。
第二步:配置网页授权登录链接
构造网页授权链接
如果开发者需要用户在访问网页时,获取用户身份信息,那么首先需要构造如下网页授权链接:
https://open.qingtui.cn/v1/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI
参数说明:
参数 | 必须 | 说明 |
---|---|---|
appid | 是 | 轻应用/订阅号的唯一标识 |
redirect_uri | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
配置网页授权链接
网页授权链接可配置在轻应用/订阅号的(含链接)消息、自定义菜单以及轻应用入口地址,并需要用户使用上此轻应用/订阅号。
轻应用参考配置示例:
示例应用网页:http://www.cisdi.com.cn
安全域名:cisdi.com.cn
应用入口:https://open.qingtui.cn/v1/oauth2/authorize?appid=APPID&redirect_uri=http%3a%2f%2fwww.cisdi.com.cn
第三步:获取qt_code
当网页授权登录链接配置完成后,需要引导用户主动点击访问,应用网页获取qt_code过程如下:
- 用户点击网页授权链接,首先向轻推服务器发起验证请求,例如:验证安全域名合法性;
- 验证通过后页面将跳转至redirect_uri填写的应用网页地址,并携带qt_code参数,形如redirect_uri?qt_code=QT_CODE;
- 应用网页主动接收qt_code参数。
参数说明:
参数 | 说明 |
---|---|
qt_code | 获取用户基本信息的临时票据,qt_code只能使用一次,5分钟未被使用自动过期。 |
第四步:根据qt_code获取用户基本信息
请求方式: GET
请求地址: https://open.qingtui.cn/v1/oauth2/userinfo?appid=APPID&grant_type=GRANT_TYPE&qt_code=QT_CODE&secret=SECRET
参数说明:
参数 | 必须 | 说明 |
---|---|---|
appid | 是 | 轻应用/订阅号的唯一标识 |
grant_type | 是 | 固定填写client_credential |
qt_code | 是 | 获取用户基本信息的临时票据 |
secret | 是 | appid对应的密钥,即AppSecret |
正确返回结果示例:
{
"openid": "b810f2492883413da0cd9d16721206",
"username": "张三",
"uid": "23cf6a9743c244ee8a1c0c496fdef8",
"unionid": "e83e0f7c22aeb37c5e28cac72b76af",
"avatar": "https://avatarcdn.qingtui.cn/b0bc11c3fd954090b891140bd6d52f.jpg",
"domainid": "domainid001",
"userid": "34d07ba854d355ff9b2d1d5a70ef09",
"role": 1,
"is_domain_manager": true,
"is_app_manager": true
}
出错返回结果示例:
{
"errcode": 40029,
"errmsg": "invalid qt_code"
}
参数说明:
参数 | 说明 |
---|---|
openid | 用户关注某个轻应用/订阅号后产生的唯一id |
username | 登录者名字 |
uid | 对于已认证轻应用/订阅号,同unionid;对于企业内部轻应用/订阅号,同userid |
unionid | 同一个轻应用/订阅号在不同企业中的相同用户,拥有相同的unionid |
avatar | 登录者的头像 |
domainid | 已认证轻应用在非公共轻应用模式下时,返回当前用户所在的企业id |
userid | 用户唯一id |
role | 登录者角色,普通用户为0,轻应用管理员为1 |
is_domain_manager | 是否为企业管理员 |
is_app_manager | 是否为轻应用/订阅号管理员 |
errcode | 错误代号 |
errmsg | 错误信息 |
第五步:根据openid获取用户详情
请求方式: GET
请求地址: https://open.qingtui.cn/team/member/openid/detail?access_token=ACCESS_TOKEN&open_id=OPEN_ID
参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 接口调用凭证 |
open_id | 是 | 使用者的openid,由qt_code获得 |
正确返回结果示例:
{
"name": "张三",
"mail": "",
"avatar": "https://avatarcdn.qingtui.cn/default/v1/default_avatar.png",
"comment": "轻推,一种智能工作方式",
"guest": "no",
"user_id": "094a112be",
"mobile": "18000000000",
"org_list": [
"1ea6731d322"
]
}
出错返回结果示例:
{
"errcode": 46015,
"errmsg": "open_id is not exist"
}
参数说明:
参数 | 说明 |
---|---|
name | 使用者名字 |
使用者邮箱 | |
avatar | 使用者头像 |
comment | 使用者名字 |
guest | 是否访客 |
user_id | 企业内用户Id |
mobile | 企业内用户手机号码 |
org_list | 所在的组织机构列表 |
errcode | 错误代号 |
errmsg | 错误信息 |
第六步:实现业务逻辑
获取到用户身份信息后,开发者可基于用户信息,实现业务逻辑。