网页授权登录

优质
小牛编辑
312浏览
2023-12-01

概述

轻推提供了基于OAuth的授权登录方式,当用户在轻推客户端中访问轻应用/订阅号应用网页时,开发者可以通过轻推身份验证机制来获取用户信息,从而免去登录环节,实现自动登录。

轻应用/订阅号中的URL链接(包括消息中的链接、自定义菜单以及轻应用入口地址),均可以通过身份验证接口来获取用户的身份信息。

注意: 轻推的身份验证仅仅只提供在轻推客户端打开网页时可以获取轻推用户的身份信息,登录到其它独立的Web系统的业务逻辑,需要开发者自行完成。

操作步骤

轻推的授权登录不仅涉及接口的调用,还需要轻应用/订阅号管理员在轻推管理后台进行安全域名和网页授权登录链接的配置,请参照如下步骤操作。

第一步:配置安全域名

安全域名,即从轻推客户端中访问企业或其它Web系统的URL域名,为保证域名的可信,需要开发者先到轻推轻应用/订阅号管理后台正确配置安全域名。

安全域名填写规范

  1. 安全域名处填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;
  2. 安全域名配置规范为一级域名,比如需要网页授权的域名为:cisdi.com.cn,配置以后此域名下面的页面http://www.cisdi.com.cn/index.htmlhttp://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过程如下:

  1. 用户点击网页授权链接,首先向轻推服务器发起验证请求,例如:验证安全域名合法性;
  2. 验证通过后页面将跳转至redirect_uri填写的应用网页地址,并携带qt_code参数,形如redirect_uri?qt_code=QT_CODE;
  3. 应用网页主动接收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获取用户基本信息的临时票据
secretappid对应的密钥,即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使用者名字
mail使用者邮箱
avatar使用者头像
comment使用者名字
guest是否访客
user_id企业内用户Id
mobile企业内用户手机号码
org_list所在的组织机构列表
errcode错误代号
errmsg错误信息

第六步:实现业务逻辑

获取到用户身份信息后,开发者可基于用户信息,实现业务逻辑。