通过微信登录pc的实现方案
- Vue
- 2023-05-23
- 285热度
- 0评论
场景:用户登录方式可选微信扫码登录
方案
微信的二维码登录有多种方式,如公众号扫码登录,弹窗二维码登录,而我们选择的是内嵌式二维码登录。官方文档:微信登录功能 / 网站应用微信登录开发指南 (qq.com)
实现步骤:
准备工作,需要在微信开放平台创建应用并获取到appid、appSecret
第一步:引入wxLogin.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
或者不用第三方自己写一个
<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样式名可以打开控制器,也可看官方提供的如下:
.impowerBox .qrcode {width: 200px;}
.impowerBox .title {display: none;}
.impowerBox .info {width: 200px;}
.status_icon {display: none}
.impowerBox .status {text-align: center;}
扫码成功后,就可以做返回的链接上获取到redirect_uri获取到code,用获取到得code去兑换access_token
将code传给后端(前端去发送的话,会遇到跨域问题)处理,在去发送上方请求,填写对应的appid、secret、code、固定的grant_type,并可返回扫码用户唯一标识openid等,就算完成了哈!