利用企业微信登录个人网站之:二、html前端二维码展示
利用企业微信登录个人网站之:三、获取access_token及登录信息
但是后来有一次部门聚餐,溘然临时要更新代码到外网做事器去,当时我们没有准备电脑,然后想要通过手机登录vpn进行网站更新,然后就创造悲剧了。
1、手机登录竟然也须要二维码,我们须要2个手机对着扫描才行;
2、然后是页面匹配没做好,手机登录时候二维码展示不全;
导致我们末了只好手机登录远程电脑桌面,然后再打开web浏览器操作。可想而知那个字体得多小,操作得多麻烦。
以是这几天看了下企业微信的api文档,并对网站进行了调度。
下面这是效果图:
通过企业微信里面点击链接后会自动跳转到对应的网站,不须要进行扫描二维码等操作,自动识别当前用户。
修正内容:
这里就不从最开始怎么搭建企业微信授权方面提及了,那部分前面文章已经说过了。
1、企业微信管理端部分:添加自定义菜单和须要跳转法人网站,可以每次很方便的直接点击进入网站,避免了手机每次要记录、输入网站地址的麻烦。
效果图:
在企业微信的事情台对应运用下面会涌现一个菜单框,点击可以直接进入企业微信管理端刚刚配置的链接。
2、后端部分:
我这里没有在访问前端页面时候通过判断是否是手机访问来做页面跳转,我后端是用python写的,以是我直接在后端加了个装饰器。
过程:
在访问登录页面前,直接先判断是不是手机用户,是就直接去企业微信进行用户授权验证,授权成功就直接进入主页,从而跳过登录页面。
实现:
#判断访问类型是不是手机def ISMobilePhone(request): MobilePhone = re.compile('Android|webOS|iPhone|iPod|BlackBerry') ISPhone = MobilePhone.findall(request.META.get('HTTP_USER_AGENT')) return ISPhone##装饰器判断用户是否登录def checklogin(func): def wrapper(args, kwargs): request = args[0] user_dict = request.session.get('is_login',None) #没上岸 if not user_dict:#确定访问类型是不是手机 ISPhone = ISMobilePhone(request) if ISPhone: ##是手机,访问后端手机登录方法 return redirect('/phone_login/') ##不是手机,访问后端网页登录方法 return redirect('/login/') #已登录,什么也不操作,正常结束装饰器 return func(args, kwargs) return wrapper#去企业微信要求code信息,并重定向新的访问页面def phone_login(request): corpid = "XXXX" ##公司id return redirect('https://open.weixin.qq.com/connect/oauth2/authorize?appid={corpid}&redirect_uri=http://XXXXX/wx_login&response_type=code&scope=snsapi_base&state=reg#wechat_redirect'.format(corpid=corpid))@checklogindef index(request): user_dict = request.session.get('is_login',None) return render_to_response('index.html', {'username':user_dict['name']})def wx_login(request): pass ##这里不再写了,以前写过了。这一段是通过code判断用户授权方面是否正常,授权正常就直接返回主页。
利用手机企业微信点击页面登录和扫描二维码有点不同,手机企业微信操作可以直策应用wechat_redirect参数来带上用户身份信息,以是少了页面上岸时候手机点确认登录的过程。这里只须要获取code来验证用户是有权限进行干系运用操作的用户。
代码运行过程:
1、手机用户访问index.html,在后端想要访问index函数;2、装饰器checklogin在访问前前辈行干系操作;3、checklogin函数判断到访问用户并没有登录,并且是手机用户;4、跳转到访问phone_login; ##return redirect('/phone_login/')5、phone_login直接去企业微信官网要求code信息,并重定向的回调链接地址为wx_login ##redirect_uri6、wx_login函数这里就不再写了,以前的文档已经写过了,这段是通过前面企业微信返回的code进行授权验证,授权正常就直接返回主页页面。
企业微信官方文档:
企业如果须要员工在跳转到企业网页时带上员工的身份信息,需布局如下的链接:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect
员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数得到员工的userid。
上面企业微信部分官方链接:https://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3
到此功能就算完成了。利用手机考试测验访问网站也正常进入成功。