微信开放平台扫码登陆解析处理工具😊,将frame数据处理为图片或Base64图片数据返回客户端进行扫码。
解决Chrome70中open.weixin.qq.com腾讯SSL证书不被信任的问题(微信官方于2018年8月23日更换了域名证书),解决Chrome68中frame跨域被拦截的问题。
最大特点
:扫码登录无跳转🤠。
demo
:https://weixin.openapi.site/demo
最新说明以博文为准。
仅适用于微信开放平台
-网站应用
。ES6,Node.js 9+,standard规范。
这个功能的代码比较简单,https和URL库都是nodejs自带的,直接复制过去用就好了。
阅WeixinLoginClientHandler.mjs
文件。
第一步:获取微信UUID;
第二步:根据微信UUID获取二维码图片;
第三步:获取微信服务器返回的Code(详见微信开放平台文档)。
直接请求https://weixin.openapi.site/img?appid=您的appid&redirect_uri=您在微信开放平台后台设置的授权回调域
,获取二维码和UUID。
再次请求https://weixin.openapi.site/check?uuid=上一步得到的UUID
,获得登录结果的数据。
您要是懒得部署一套,可以直接使用以上地址。
先阅读源码,修改server.mjs
里面的配置信息,然后类似以下的方法执行。
node --experimental-modules server.mjs
访问http://localhost:8033/login/weixin/demo
即可进行测试。
weixinLoginClientHandler.weixinUUID().then(r => console.log(r)) \\ 获取微信uuid(用于获取微信二维码和Ajax轮询结果所需参数)
weixinLoginClientHandler.weixinQRCodeImgURL().then(r => console.log(r)) \\ 可以直接获取二维码图片
weixinLoginClientHandler.weixinQRCodeImgBase64().then(r => console.log(r)) \\ 获取二维码图片的Base64数据(主要用于Chrome70中腾讯所使用的赛门铁克证书失效的情况)
weixinLoginClientHandler.getCode(uuid, params.last).then(r => console.log(r)) \\ 获取微信服务器返回的Code(第一个连接是长连接,当用户处于“扫描成功,请在微信中点击确认即可登录”状态时可能会变为轮询,这主要由腾讯服务器控制)
import WeixinLoginClientHandler from './WeixinLoginClientHandler'
const weixinLoginClientHandler = new WeixinLoginClientHandler({
appid: 'wx827225356b689e24',
redirect_uri: 'https://qq.jd.com/',
state: ''
})
weixinLoginClientHandler.weixinUUID().then(r => {
console.log(r)
weixinLoginClientHandler.weixinQRCodeImgBase64(r).then(r => console.log(r))
})
weixinLoginClientHandler.weixinQRCodeImgURL().then(r => console.log(r))
WeixinLoginClientHandler.mjs
文件到你的ES6项目并改后缀为js
,然后可自由发挥。Node.js v10.5+
使用PM2配置node_args: '--experimental-modules'
会有报错,需要npm i esm
,然后配置node_args: '-r esm'
。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型