概况
需求:用户通过微信扫码登陆账号,实现如下效果!
微信二维码登陆
微信提供的登陆方式有很多种,就如公众号扫码登陆,弹窗二维码登陆,而现在我们要使用的是内嵌式二维码登陆,详细可前往 官方文档
准备工作,需求前往微信开放平台创建应用
并从网站应用获取appid、appSecret
首先
引入wxLogin.js脚本,这有好几种方法!
js
// 脚本引入
<script type="text/javascript" src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
// vue 也可安装vue-wxlogin 第三方插件
npm install vue-wxlogin --save-dev
上面的使用方法,就不过多介绍了哈,如果你像我使用的是vue,并且不太想用第三方插件,可使用如下:
js
<script setup lang="ts">
onMounted(() => {
setWxerwma()
})
// 实例微信js对象
function setWxerwma() {
const s = document.createElement('script')
s.type = 'text/javascript'
s.src = 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js'
const wxElement = document.body.appendChild(s)
wxElement.onload = function () {
const obj = new WxLogin({
self_redirect: false,
id: 'weixinLogin', // 需要显示的容器id
appid: 'xxxxxx', // 微信开放平台appid wx*******
scope: 'snsapi_login', // 网页默认即可
redirect_uri: encodeURIComponent('xxxxxxxxxxxxxx'), // 授权成功后回调的url
state: Math.ceil(Math.random() * 1000), // 可设置为简单的随机数加session用来校验
style: 'black', // 提供"black"、"white"可选。二维码的样式
href: 'data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7bWFyZ2luLXRvcDowO30KLmltcG93ZXJCb3ggLnRpdGxlIHtkaXNwbGF5OiBub25lO30=', // 外部css文件url,需要https
})
}
}
</script>
<template>
<div>
<div id="weixinLogin" />
</div>
</template>
上面的功能,我就详细介绍下href
这个参数,是用来修改二维码样式,可用css链接地址,也可用base64,修改的css样式名也可打开控制器,也可看官方提供的如下
css
.impowerBox .qrcode {width: 200px;}
.impowerBox .title {display: none;}
.impowerBox .info {width: 200px;}
.status_icon {display: none}
.impowerBox .status {text-align: center;}
如图,我隐藏标题、跟间距 base64编译地址
扫码成功后,就可在返回的链接上获取到redirect_uri
获取到code
,用获取到得code
去兑换access_token
如官网所示:
并将code
传给后端(前端去发送的话,会遇到跨域问题)处理,在去发送上方请求,填写对应的appid
、secret
、code
、固定的grant_type
,并可返回扫码用户唯一标识openid
等,就算完成了哈!
后续还有问题的话,在补充哈~