成员身份验证

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

成员身份验证


PDF版下载

OAuth2简介

如流平台提供了OAuth的授权登录方式,可以使如流客户端(移动端或者桌面端内嵌打开)打开的网页获取成员的身份信息,从而免去登录环节。 企业应用中的URL链接(包括自定义菜单或者消息中的链接),均可通过OAuth2.0验证接口来获取成员的身份信息(UserId)。

第一步:构造网页授权链接

获取用户在如流客户端打开应用(或者链接)时的用户身份,如流提供两种方法:

方法一:快速获取code

当用户在如流应用中心打开应用首页时,如流客户端会在发出请求时,在header中的hicode字段加上客户端生成的code(ios.xxx.xxx形式),应用方服务端使用此code请求后续接口获取用户身份;若从header中没有获取到hicode字段,或者使用hicode获取用户信息失败,还请降级到方法二。

方法二:常规获取code

构造如下链接来获取code参数:

请求地址https://xpc.im.baidu.com/oauth2/authorize?appid=CORPID&redirect_uri={REDIRECT_URI}
参数说明

参数类型参数位置是否必须说明
appidStringUrl参数授权方CorpID,参考获取企业授权信息
redirect_uriStringUrl参数授权后重定向的回调链接地址,请使用urlencode对链接进行处理,例如http://localhost:8080/index.html

员工在如流客户端点击后,页面将跳转至 redirect_uri?code=CODE,企业可携带code参数请求获取访问用户身份接口获得员工的userid。code长度最大为512字节。

第二步:获取访问用户身份

请求方式:GET(HTTPS)
请求地址https://api.im.baidu.com/api/user/getuserinfo?access_token={ACCESS_TOKEN}&code={CODE}&agentid={AGENTID}
参数说明

参数类型参数位置是否必须说明
access_tokenStringUrl参数调用接口凭证,参考获取企业凭证
codeStringUrl参数通过网页授权链接获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
agentidIntegerUrl参数跳转链接时所在的企业应用ID图片

权限要求:管理员须拥有应用的使用权限;agentid必须和跳转链接时所在的企业应用ID相同。
正常返回结果

{
    "errcode": 0,
    "errmsg": "ok",
    "UserId": "USERID"
}

参数说明

参数说明
UserId用户在企业内的UserID

异常返回结果

{
    "errcode": "40029",
    "errmsg": "invalid code" 
}

参数说明

errcodeerrmsg
40029不合法的oauth_code
42003oauth_code超时或者失效
40056不合法的agentid
60011管理员权限不足
60014客户端code认证失败

缓存方案建议

通过OAuth2.0验证接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案:

  1. 配置应用的访问地址为目标页面地址;
  2. 用户访问应用地址时,目标页面首先通过自行生成的cookie识别用户身份;
  3. 若用户身份识别失败,则重定向到OAuth验证链接,获取成员的身份信息后,应用方重新设置标识用户身份的cookie信息(为了安全,设置的cookie建议加密);
  4. 目标页面上的后续请求通过cookie识别用户身份。