构造网页授权链接
如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取 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
redirect_uri
response_type
scope
state
必须 说明
是
是
是
是
否
企业的 CorpID
授权后重定向的回调链接地址,请使用 urlencode 对链接进行处理
返回类型,此时固定为:code
应用授权作用域。企业自建应用固定填写:snsapi_base
重定向后会带上 state 参数,企业可以填写 a-zA-Z0-9 的参数值,长度不可超过
128 个字节
#wechat_redirect 是
终端使用此参数判断是否需要带上身份信息
员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据 code 参数获得员工的 userid。
code 长度最大为 512 字节。
示例:
假定当前
企业 CorpID:wxCorpId
访问链接:http://api.3dept.com/cgi-bin/query?action=get
根据 URL 规范,将上述参数分别进行 UrlEncode,得到拼接的 OAuth2 链接为:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxCorpId&redirect_uri=http%3a%2f%2fapi.3dept.com%
2fcgi-bin%2fquery%3faction%3dget&response_type=code&scope=snsapi_base&state=#wechat_redirect
员工点击后,页面将跳转至
http://api.3dept.com/cgi-bin/query?action=get&code=AAAAAAgG333qs9EdaPbCAP1VaOrjuNkiAZHTWgaWsZQ&s
tate=
企业可根据 code 参数调用获得员工的 userid
注意到,构造 OAuth2 链接中参数的 redirect_uri 是经过 UrlEncode 的
调试工具
获取 access_token 是调用企业微信 API 接口的第一步,相当于创建了一个登录凭证,其它的业务 API 接口,
都需要依赖于 access_token 来鉴权调用者身份。
因此开发者,在使用业务接口前,要明确 access_token 的颁发来源,使用正确的 access_token。
请求方式: GET(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
注:此处标注大写的单词ID和SECRET,为需要替换的变量,根据实际获取值更新。其它接口也采用相同的
标注,不再说明。
参数说明:
参数
必须
说明
corpid
corpsecret
权限说明:
是
是
企业 ID,获取方式参考:术语说明-corpid
应用的凭证密钥,获取方式参考:术语说明-secret
每个应用有独立的 secret,获取到的 access_token 只能本应用使用,所以每个应用的 access_token 应该分
开来获取
返回结果:
1. {
2.
3.
4.
5.
6. }
"errcode": 0,
"errmsg": "ok",
"access_token": "accesstoken000001",
"expires_in": 7200
参数说明:
参数
errcode
errmsg
access_token
expires_in
注意事项:
说明
出错返回码,为 0 表示成功,非 0 表示调用失败
返回码提示语
获取到的凭证,最长为 512 字节
凭证的有效时间(秒)
开发者需要缓存 access_token,用于后续接口的调用(注意:不能频繁调用 gettoken 接口,否则会受到频率
拦截)。当 access_token 失效或过期时,需要重新获取。
access_token 的有效期通过返回的 expires_in 来传达,正常情况下为 7200 秒(2 小时),有效期内重复获
取返回相同结果,过期后获取会返回新的 access_token。
由于企业微信每个应用的 access_token 是彼此独立的,所以进行缓存时需要区分应用来进行存储。
access_token 至少保留 512 字节的存储空间。
企业微信可能会出于运营需要,提前使 access_token 失效,开发者应实现 access_token 失效时重新获取的
逻辑。
获取访问用户身份
该接口用于根据 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) 当用户为企业成员时返回示例如下:
1. {
2.
3.
4.
5.
6. }
"errcode": 0,
"errmsg": "ok",
"UserId":"USERID",
"DeviceId":"DEVICEID"
参数
说明
errcode
返回码
errmsg
对返回码的文本描述内容
UserId
成员 UserID。若需要获得用户详情信息,可调用通讯录接口:读取成员
参数
说明
DeviceId
手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响)
b) 非企业成员授权时返回示例如下:
1. {
2.
3.
4.
5.
6. }
"errcode": 0,
"errmsg": "ok",
"OpenId":"OPENID",
"DeviceId":"DEVICEID"
参数
说明
errcode
返回码
errmsg
对返回码的文本描述内容
OpenId
非企业成员的标识,对当前企业唯一。不超过 64 字节
DeviceId
手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响)
出错返回示例:
1. {
2.
3.
4. }
"errcode": 40029,
"errmsg": "invalid code"
读取成员
在通讯录同步助手中此接口可以读取企业通讯录的所有成员信息,而自建应用可以读取该应用设置的可见范围
内的成员信息。
请求方式:GET(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID
参数说明:
参数
必须
说明
access_token
userid
是
是
调用接口凭证
成员 UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为
1~64 个字节
权限说明:
应用须拥有指定成员的查看权限。
返回结果:
1. {
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
"errcode": 0,
"errmsg": "ok",
"userid": "zhangsan",
"name": "李四",
"department": [1, 2],
"order": [1, 2],
"position": "后台工程师",
"mobile": "13800000000",
"gender": "1",
"email": "zhangsan@gzdev.com",
"is_leader_in_dept": [1, 0],
"avatar":
"http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TB
icnHFlhiafvDwklOpZeXYQQ2icg/0",
14.
"thumb_avatar":
"http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TB
icnHFlhiafvDwklOpZeXYQQ2icg/100",
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
"telephone": "020-123456",
"alias": "jackzhang",
"address": "广州市海珠区新港中路",
"open_userid": "xxxxxx",
"main_department": 1,
"extattr": {
"attrs": [
{
"type": 0,
"name": "文本名称",
"text": {
"value": "文本"
}
},
"type": 1,
"name": "网页名称",
"web": {
"url": "http://www.test.com",
"title": "标题"
}
{
}
]
},
"status": 1,
"qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx",
"external_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"
}
}
]
}
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70. }
参数说明:
参数
说明
参数
errcode
errmsg
userid
name
说明
返回码
对返回码的文本描述内容
成员 UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为 1~64 个字节
成员名称,此字段从 2019 年 12 月 30 日起,对新创建第三方应用不再返回,2020 年 6 月 30
日起,对所有历史第三方应用不再返回,后续第三方仅通讯录应用可获取,第三方页面需要
通过通讯录展示组件来展示名字
mobile
手机号码,第三方仅通讯录应用可获取
department
成员所属部门 id 列表,仅返回该应用有查看权限的部门 id
order
position
gender
email
部门内的排序值,默认为 0。数量必须和 department 一致,数值越大排序越前面。值范围是
[0, 2^32)
职务信息;第三方仅通讯录应用可获取
性别。0 表示未定义,1 表示男性,2 表示女性
邮箱,第三方仅通讯录应用可获取
is_leader_in_dept
表示在所在的部门内是否为上级。;第三方仅通讯录应用可获取
avatar
头像 url。 第三方仅通讯录应用可获取
thumb_avatar
头像缩略图 url。第三方仅通讯录应用可获取
telephone
座机。第三方仅通讯录应用可获取
alias
extattr
status
qr_code
别名;第三方仅通讯录应用可获取
扩展属性,第三方仅通讯录应用可获取
激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业。
已激活代表已激活企业微信或已关注微工作台(原企业号)。未激活代表既未激活企业微信
又未关注微工作台(原企业号)。
员工个人二维码,扫描可添加为外部联系人(注意返回的是一个 url,可在浏览器上打开该 url
以展示二维码);第三方仅通讯录应用可获取
external_profile
成员对外属性,字段详情见对外属性;第三方仅通讯录应用可获取
external_position
对外职务,如果设置了该值,则以此作为对外展示的职务,否则以 position 来展示。第三方
仅通讯录应用可获取
address
地址。第三方仅通讯录应用可获取
open_userid
全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的 open_userid 是相同的,
最多 64 个字节。仅第三方应用可获取
main_department 主部门