胖蔡说技术
随便扯扯

企业微信web端获取企业内用户信息流程

企业微信构造网页授权链接

获取access_token是调用企业微信API接口的第一步,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于access_token来鉴权调用者身份。因此开发者,在使用业务接口前,要明确access_token的颁发来源,使用正确的access_token
请求方式: get(https
请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

参数必须说明
corpid企业ID
corpsecret应用的凭证秘钥

权限说明:
每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取
返回结果:

{
     "errcode":0, // 出错返回码,为0表示成功,非0表示调用失败
     "errmsg":"ok", // 返回码提示语
     "access_token":"accesstoken0000001", // 获取到的凭证,最长为512字节
     "expires_in":7200 // 凭证的有效时间(秒)
 }
 

如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code参数:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
 
参数必须说明
appid企业的CorpID
redirect_uri授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type返回类型,此时固定为:code
scope应用授权作用域,企业自建应该固定填写:snsapi_base
state重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字符
#wechat_redirect终端使用此参数判断是否需要带上身份信息

员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。code长度最大为512字节。

获取用户身份

该接口用于根据code获取成员信息
请求方式: GET(https)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明:

参数必须说明
access_token调用接口凭证
code通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

权限说明:
跳转的域名须完全匹配access_token对应应用的可信域名,否则会返回50001错误。
返回结果:
a. 当用户为企业成员时返回实例如下:

{
     "errcode":0, // 返回码,非0表示调用失败
     "errmsg":"ok", // 对返回码的文本描述内容
     "UserId":"USERID", // 成员UserID
     "DeviceId":"DEVICEID" // 手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响)
 }
 

b. 当用户为非企业成员授权时返回实例如下:

{
     "errcode":0, // 返回码,非0表示调用失败
     "errmsg":"ok", // 对返回码的文本描述内容
     "OpenId":"OPENID", // 非企业成员的标识,对当前企业唯一。
     "DeviceId":"DEVICEID" // 手机设备好(由企业微信在安装时随机生成,删除重装会改变,升级不受影响)
 }
 

读取成员

在通讯录同步助手中此接口可以读取企业通讯录的所有成员信息,而自建用用可以读取该应用设置的可见范围内的成员信息。
请求方式: GET(HTTPS
请求地址: https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID
参数说明:

参数必须说明
access_token调用接口凭证
userid成员UserID。对应管理端的账号,企业内必须唯一。不区分大小写,长度为1~64的字节。

权限说明:
应用须拥有指定成员的查看权限。
返回结果:

{
     "errcode": 0, // 返回码,非0表示调用失败
     "errmsg": "ok", // 对返回码的文本描述内容
     "userid": "zhangsan", // 成员UserID。对应管理端的账号,企业内必须唯一。不区分大小写,长度为1~64的字节。
     "name": "李四", // 成员名称,此字段从2019年12月30日起,对新创建第三方应用不再返回,2020年6月30日起,对所有历史第三方应用不再返回,后续第三方仅通讯录应用可获取,第三方页面需要通过通讯录展示组件来展示名字。
     "department": [1, 2], // 成员所属部门id列表,仅返回该应用有查看权限的的部门id
     "order": [1, 2], // 部门内的排序值,默认为0。数量必须和department一致,数值越大排序越前面。值范围无符号int
     "position": "后台工程师", // 职务信息;第三方仅通讯录应用可获取。
     "mobile": "13800000000", // 手机号码,第三方仅通讯录应用可获取
     "gender": "1", // 性别。0表示未定义, 1表示男性,2表示女性
     "email": "zhangsan@gzdev.com", // 邮箱,第三方仅通讯录应用可获取
     "is_leader_in_dept": [1, 0], // 表示在所在的部门内是否为上级。第三方仅通讯录应用可获取
     "avatar": "http://wx.qlogo.cn/mmope/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0", // 头像url。第三方仅通讯录应用可获取
     "thumb_avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/100", // 头像缩略图url。第三方仅通讯录应用可获取
     "telephone": "020-123456", // 座机。第三方仅通讯录应用可获取
     "alias": "jackzhang", // 别名。第三方仅通讯录应用可获取
     "address": "广州市海珠区新港中路", // 地址。第三方仅通讯录应用可获取
     "open_userid": "xxxxxx", // 全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的open_userid是相同的,最多64个字节。第三方仅应用可获取
     "main_department": 1, // 主部门
     "extattr": { // 扩展属性
         "attrs": [
             {
                 "type": 0,
                 "name": "文本名称",
                 "text": {
                     "value": "文本"
                 }
             },
             {
                 "type": 1,
                 "name": "网页名称",
                 "web": {
                     "url": "http://www.test.com",
                     "title": "标题"
                 }
             }
         ]
     },
     "status": 1, // 激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业。已激活代表已激活企业微信或已关注微工作台(原企业号)。未激活代表既未激活企业微信又未关注微工作台(原企业号)。
     "qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx", // 员工个人二维码,扫描可添加为外部联系人(注意返回的是一个url,可在浏览器上打开该url以展示二维码);第三方仅通讯录应用可获取
     "external_position": "产品经理", // 对外职务,如果设置了该值,则以此作为对外展示的职务,否则以position来展示。第三方仅通讯录应用可获取
     "external_profile": { // 成员对外属性,字段详情见对外属性;第三方仅通讯录应用可获取
         "external_corp_name": "企业简称",
         "external_attr": [{
                 "type": 0,
                 "name": "文本名称",
                 "text": {
                     "value": "文本"
                 }
             },
             {
                 "type": 1,
                 "name": "网页名称",
                 "web": {
                     "url": "http://www.test.com",
                     "title": "标题"
                 }
             },
             {
                 "type": 2,
                 "name": "测试app",
                 "miniprogram": {
                     "appid": "wx8bd80126147dFAKE",
                     "pagepath": "/index",
                     "title": "my miniprogram"
                 }
             }
         ]
     }
 }
 

本文由@xuxo提供,版本权归作者所有。

赞(2) 打赏
转载请附上原文出处链接:胖蔡说技术 » 企业微信web端获取企业内用户信息流程
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏