总体流程
1. 要通过网站扫码登录的话需要先去微信开放平台申请一个网站APP
网站APP需要提交一些资料。地址是https://open.weixin.qq.com/
是开放平台,不是公众平台。
公众平台是公众号,订阅号,
开放平台,是可以绑定多个公众号,小程序,以及网站APP的
且开放平台需要认证,每年要交钱。
2. 审核通过以后 就会生成appid 以及 secret
注:. 微信公众号是不能通过网站扫码登录的。(当然也可以绕路走,也能实现关注公众号登录,这里我就不套讨论这个问题,只是有一点思路,具体行不行我也不太清楚)
1.1 去 https://open.weixin.qq.com/ 创建网站APP应用
1.2 提交资料审核,需要盖公章
3. 接下来就是获取appid 和 secret做扫码登录
第一步在需要显示二维码的页面添加js
function showWechatEr () { var s = document.createElement('script') s.type = 'text/javascript' s.src = 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js' var wxElement = document.body.appendChild(s) wxElement.onload = function () { new WxLogin({ id: 'fisrt-shade-main', // 需要显示的容器id appid: '', // 公众号appid wx******* scope: 'snsapi_login', // 网页默认即可 redirect_uri: encodeURIComponent(''), // 授权成功后回调的url state: Math.ceil(Math.random() * 1000), // 可设置为简单的随机数加session用来校验 style: 'black', // 提供"black"、"white"可选。二维码的样式 href: '' // 外部css文件url,需要https }) } shadeFn('fisrt-shade',{width:340}).open() }这里重点讲一下redirect_uri 这里的URL需要和你提交资料审核的域名一致 不然二维码不显示
这个URL是当你扫描二维码确认授权以后页面会转跳到该页面,并且会带上CODE以及STATUS两个参数
就像这样转跳的URL,你需要后台在bindAccount这个方法里面通过通过code换取微信用户信息
/** * 通过 code换取用户基础信息 openid unionid 昵称 头像 * @author YangJie * 2019年11月26日 下午4:35:16 */ public WeixinUserInfo getWechatUserInfo(HttpServletRequest request, HttpServletResponse response) { WeixinUserInfo weixinUserInfo = new WeixinUserInfo(); weixinUserInfo.setType(3); String code = request.getParameter("code"); if (code == null || "".equals(code)) return null; String openid = null; String accessToken = null; String appId =SystemParams.getProperty("wechat.web.appid"); //这里是你的appid String secret = SystemParams.getProperty("wechat.web.secret");//这里是生成的secret //获取token String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code"; //httpClientUtils是我自己封装的一个发送get和post的类 这里就不贴出来了,自己写一个就行了 String result = httpClientUtils.getSimple(url); try { JsonParser jsonParser = new JsonParser(); JsonElement jsonElement = jsonParser.parse(result); openid = jsonElement.getAsJsonObject().get("openid").getAsString(); accessToken = jsonElement.getAsJsonObject().get("access_token").getAsString(); } catch (Exception e) { log.error("--------------------"); log.error("获取web端二维码登录openid 异常"); log.error(url); log.error(result); log.error("--------------------"); //e.printStackTrace(); return null; } //通过token获取用户基础信息 try { url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN"; result = httpClientUtils.getSimple(url); JsonParser jsonParser = new JsonParser(); JsonElement jsonElement = jsonParser.parse(result); String unionid = jsonElement.getAsJsonObject().get("unionid").getAsString(); String nickname = jsonElement.getAsJsonObject().get("nickname").getAsString(); String headimgurl = jsonElement.getAsJsonObject().get("headimgurl").getAsString(); weixinUserInfo.setUnionid(unionid); weixinUserInfo.setOpenid(openid); weixinUserInfo.setNickname(nickname); weixinUserInfo.setHeadimgurl(headimgurl); } catch (Exception e) { log.info("--------------------"); log.info("获取web端二维码登录用户基础信息异常"); log.info(url); log.info(result); log.info("--------------------"); //e.printStackTrace(); return null; } return weixinUserInfo; }
相关推荐
扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取二维码内容扫码扫码扫码获取...
该Demo为.NET Core Web环境,集成SignalR,依据SignalR实时通讯特性实现手机扫码登录,代码简洁清晰,可直接使用。该Demo为原理解析,并未实现复杂业务及Token验证(小白提示:扫码登录需保证手机与网站在同一局域网...
二维码扫码登录;服务器端、网页前端、移动端源码; ---- ## 项目介绍 - 一个能够实现扫码登录的demo,不妨小小**Star**一下吧 >.~,[**简书地址**](https://www.jianshu.com/p/d5a7a3081bbf)请戳。 - 本项目一共...
调出摄像头,拍照保存到画布,定时传送到解析函数 ...解析函数是后台c# .net MVC 实现的,解析函数用到的二维码解析API依赖于第三方二维码库google zxing , 因此需要先引用类库:zxing.dll、zxing.presentation.dll
NULL 博文链接:https://1197581932.iteye.com/blog/2412135
普通HTML页面web识别条形码,二维码,亲自测试可以使用。
扫码登录、获取扫码人的身份信息
IOS开发常用到的二维码功能,基于系统的二维码扫码,以及libqrencode的二维码生成,ZXingObjc当然也不会落下。 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web...
weixin_login 微信网页授权实现扫码登录
基于H5流媒体,调用手机摄像头实现扫码 实现原理:H5调用系统媒体设备》选择前置摄像头》捕获视频流》渲染到视频播放器》定时抓取视频截图》渲染到canvas》转换为图片流》使用图像识别库对图片流进行二维码识别 优势...
安卓,华为荣耀平板自带浏览器亲测H5页面调用摄像头扫码识别成功,测试项目源码完整下载。****注意电脑端浏览器不可用,请用IIS部署,用平板或者安卓手机测试。
作为管理员,我希望WEB版可通过APP扫描二维码进行登录。 需求描述......
java程序编写获取扫码枪扫码程序,并将扫码枪扫码有数据库MySQL数据进行对比预警,解决相关行业使用扫码枪进行出货重复使用相关商品码问题。该程序连接MySQL数据库,可同时部署到多台机器上进行设备比对。底层也实现...
jsqrcode (1)基于JavaScript&ZXing实现 (2)通过Web摄像头或文件输入有效识别QR二维码 (3)可大幅提高开发效率
本示例是java将一个链接生成二维码,在扫二维码的时候跳转到指定链接,
java web项目使用qrcode创建二维码方法示例,可使用微信进行扫码查看,直接在web前端运行,在界面上显示生成的二维码。
微信web端扫码支付,后台基于servlet的demo.测试可用。
java 对接扫码枪 工具类
基于Java Web的智能二维码门禁管理系统(本科毕业论文+源码) 基于Java Web的智能二维码门禁管理系统(本科毕业论文+源码) 基于Java Web的智能二维码门禁管理系统(本科毕业论文+源码) ...
手机端 zxing 二维码扫描,web端js二维码生成