企微网页授权登录
企业微信提供了OAuth的授权登录方式,可以让从企业微信终端打开的网页获取成员的身份信息,从而免去登录的环节。
一、授权方式:
静默授权:用户点击链接后,页面直接302跳转至 redirect_uri?code=CODE&state=STATE
手动授权:用户点击链接后,会弹出一个中间页,让用户选择是否授权,用户确认授权后再302跳转至 redirect_uri?code=CODE&state=STATE
二、具体实现步骤:
前端:
1.构造网页授权链接,获取code
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
链接中粗体是需要替换的,参数说明如下
REDIRECT_URI 即为申请的外网可以访问的域名,与授权登录,配置可信域名的地址保持一致
可以在应用管理页面,将拼接好的授权链接放在应用主页,打开应用时会直接重定向至应用部署的地址。
2.根据code调用后台接口请求用户信息
这样就不用在前端代码里请求,只需要在页面刚进去获取一下code:
// 判断当前页面URL中是否包含code参数
const isLogin = location.href.search('code=') !== -1
if (isLogin) {
// 获取本地存储的用户信息
this.userInfo = JSON.parse(localStorage.getItem('userInfo'))
if (!this.userInfo) {
// 获取code参数的值
const code = location.href.split('code=')[1].split('&')[0]
// 在这里发送请求获取用户信息
}
}
后端:
后端收到请求后需要:
1.获取access_token
企微官方接口 获取access_token
2.根据code和access_token获取当前访问的员工的信息 包括userId 和用户票据user_ticket
企微官方接口 获取用户信息
3.通过user_ticket/userId获取用户敏感信息。之后返回给前端
企微官方接口 获取用户敏感信息
为了安全考虑,开发者请勿将access_token返回给前端,需要开发者保存在后台,所有访问企业微信api的请求由后台发起