企业微信自建应用获取登录用户敏感信息,一键授权
转载:https://zhuanlan.zhihu.com/p/573481835
企业微信自建应用配置
自建应用
新建应用
企业微信管理后台——>应用管理,拉到最下方,创建应用
创建应用
配置应用
在应用管理页面点击刚才创建刚才建好的应用打开它,拉到最下方
先配置可信域名,网页授权及JS-SDK,点击打开,然后配置上你的域名加端口。
这个地方配置的域名+端口号,需要验证,点击申请验证,会得到一个文件
其实就是当访问你的域名+端口号+文件名时能得到这个文件或者能得到这个文件中的字符串即可完成验证成功,此处我是用的django,直接给了接口能返回这个文件中的字符串。代码如下
上面为路由,当访问文件名接口时返回了文件中的字符串,也可以直接返回这个文件。
在可信域名配置完成后,打开企业可信IP,直接将你的服务器IP复制进去即可
构造网页授权链接
文档地址: [构造网页授权链接](构造网页授权链接 - 接口文档 - 企业微信开发者中心)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE&agentid=AGENTID#wechat_redirect
注意,大写字母的单词为你要替换的地方,说明:
CORPID:企业的CorpID,在管理后台顶部导航选择我的的企业,然后就能找到企业ID
REDIRECT_URI:授权后重定向的回调链接地址,请注意要使用urlencode对链接进行处理,比如我要跳转的是
http://li-xun.work:8082/authorize
, urlencode处理后就是http%3A%2F%2Fli-xun.work%3A8082%2Fauthorize
scope:应用授权作用域。snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId);snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。
AGENTID:应用agentid,应用管理页点开创建的应用就能看到,snsapi_privateinfo时必填。
STATE:重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
完整链接示例:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wwa5550c05b175d888&redirect_uri=http%3A%2F%2Fli-xun.work%3A8082%2Fauthorize&response_type=code&scope=snsapi_privateinfo&state=123456&agentid=1000012#wechat_redirect
配置完成后,当请求来到服务器后,直接跳转到此授权链接(手动授权登录),显示如下。
请求用户信息
当授权完成后,服务器的authorize接口得到一个重定向新请求,为什么是authorize接口,因为构造网页授权链接中配置的授权后重定向的回调链接地址是 `http://li-xun.work:8082/authorize`
此请求中带有一个用于身份认证的code,使用code可以换取到登录人的信息,使用如下:
请求接口:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
请求方式::GET
def get_user_info(CODE, ACCESS_TOKEN): """ 获取企业成员个人信息 :param CODE: 企业成员CODE :param ACCESS_TOKEN: 企业ACCESS_TOKEN :return: 个人信息 """ url = 'https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=' + ACCESS_TOKEN + '&code=' + CODE res = requests.get(url) return res.json()
说明:
* code为上一步重定向携带的code。
* 其中ACCESS_TOKEN是调用企业微信API的凭证,如何获得请看[企业微信开发文档](获取access_token - 接口文档 - 企业微信开发者中心) , 正文也会补充说明。
此请求能得到的内容如下:
接着使用user_ticket去请求用户信息即可,使用如下:
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=ACCESS_TOKEN
def get_user_detail(USER_TICKET, ACCESS_TOKEN):""" 获取企业成员详细信息 :param USER_TICKET: 成员信息票据 :param ACCESS_TOKEN: 企业ACCESS_TOKEN :return: 个人详细信息 """
url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=" + ACCESS_TOKEN
d = {
"user_ticket": USER_TICKET
}
res = requests.post(url=url, data=json.dumps(d))
return res.json()
得到的结果就是我们的最终结果,用户信息
<br/>
补充
ACCESS_TOKEN
这是企业微信接口调用的凭证,不同的应用ACCESS_TOKEN不同,使用如下:
请求方式: GET(HTTPS)<br/>请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
<br/>
ID:企业ID
SECRET:应用密钥
应用管理——>点开你创建的应用
点击查看后到企业微信上去查看
<br/>
---
<br/>
评论功能已关闭