企业微信 获取当前用户信息

按我的理解说白了就是:

1 按微信指定的方式拼接出一个oauth url地址(

  • https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

redirect_uri:my url地址

scope:snsapi_base或snsapi_userinfo

snsapi_base:静默授权,可获取成员的基础信息;

snsapi_userinfo:静默授权,可获取成员的详细信息,但不包含手机、邮箱;

snsapi_privateinfo:手动授权,可获取成员的详细信息,包含手机、邮箱

2 访问oauth url这个地址,微信会做一些的验证之类的工作,最终如果没有问题,它会在my url 这个地址后面加上两个参数:code 和 state。

3 然后跳转到 类似于 my url ?code=xxxxxxxx&state=STATE 这个我们的地址上来了。

4 我们拿到code值之后,使用(https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE)可以得到 UserId和user_ticket

5 我们拿到user_ticket值之后,使用(https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token=ACCESS_TOKEN)+USER_TICKET

可以得到用户详细信息

具体可以看两个地方的文档

https://work.weixin.qq.com/api/doc#90000/90135/91020

https://qydev.weixin.qq.com/wiki/index.php?title=首页

1 构造网页授权链接

以下是微信官方文档内容:

如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取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字节。

示例:

假定当前
企业CorpID:wxdd725338566d6ffe
访问链接:http://api.3dept.com/cgi-bin/query?action=get
根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxdd725338566d6ffe&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=eh3CZBgG333qs9EdaPbCAP1VaOrjuNkiAZHTWgaWsZQ&state=
企业可根据code参数调用获得员工的userid

注意到,构造OAuth2链接中参数的redirect_uri是经过UrlEncode的

猜你喜欢

转载自www.cnblogs.com/BinBinGo/p/11484802.html