vue实现pc端扫码登录

vue pc端微信扫码登录

效果图

在这里插入图片描述


方式一:npm

安装并引入插件

wxlogin

    // 安装
    npm install vue-wxlogin -S

    // 局部引入
    import wxlogin from 'vue-wxlogin';

    // 注册组件
    components: {
        wxlogin
    }

参数说明

在这里插入图片描述


使用
<wxlogin
	class="login"
    appid="wxappid"
    :scope="'snsapi_login'"  
    :theme="'black'"  
    :redirect_uri='encodeURIComponent(`https://www.test.com/project/#${fullPath}`)'
    :href="'data:text/css;base64,LmltcG93ZXJCb3ggLnRpdGxlIHsKICBkaXNwbGF5OiBub25lOwp9Ci5pbXBvd2VyQm94IC5xcmNvZGUgewogIHdpZHRoOiAyMjVweDsKICBoZWlnaHQ6IDIyNXB4Owp9'"
	:state="`${Math.random()}`"
 >
</wxlogin>

自定义样式
  • 把自定义的样式,转换为base64格式
  • 使用text/css模式
// 根据需求自定义二维码样式
.impowerBox .title {
  	display: none;
}
.impowerBox .status.status_browser {
  	display: none;
}
.impowerBox .qrcode {
  	border: none;
  	width: 225px;
  	height: 225px;
}
.impowerBox .status{
  	display: none
}

方式二:通过js

引用js文件
<script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

vue
<div id="container">
	<div id="wxLogin"></div>
</div>

使用
<script>
    export default {
        data() {
            return {
                QRCodeStyle: `data:text/css;base64,QGNoYXJzZXQgIlVURi04IjsNCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7ZGlzcGxheTogbm9uZTt9DQouc3RhdHVzX2ljb24ge2Rpc3BsYXk6IG5vbmV9DQouaW1wb3dlckJveCAuc3RhdHVzIHt0ZXh0LWFsaWduOiBjZW50ZXI7fSANCg==`
            }
        },
        mounted() {
        	// 微信登录
            getWxLogin();
        },
        methods: {
        	getWxLogin() {
        		let url = 'https://www.xxxxx/#/shop';
	            var obj = new WxLogin({
	                id: "wxLogin",
	                appid: "wxappid",
	                scope: "snsapi_login",
	                // 扫码成功后 跳转的地址
	                redirect_uri: encodeURIComponent(url), // 授权成功后回调的url
	                state: Math.ceil(Math.random() * 1000), // 可设置为简单的随机数加session用来校验
	                style: 'black',
	                href: this.QRCodeStyle
	            });
			}
        }
    }
</script>

注意
  • redirect_uri: 回调地址,进行编码【encodeURIComponent】
  • redirect_uri: 确定登录后会重定向url上携带codestate参数
  • 首先,在开放平台申请账号,认证,创建网站应用
https://www.test.com/project/#/login?code=xxx&state=xxx
微信扫码登录PC端通常涉及到前端与后端的配合,以及第三方微信SDK的集成。在Vue.js项目中,你可以按以下步骤实现: 1. **引入微信JS-SDK**:首先,在你的Vue组件里通过script标签引入微信的JSSDK库,需要提供一个配置好的回调函数,如`wx.config`。 ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" async defer></script> ``` 2. **配置微信登录**:在Vue实例的生命周期钩子里,设置微信配置项,包括AppID、redirect_uri等,并启用扫一扫功能。 ```javascript export default { mounted() { window.WXJSBridgeReady = function () { this.initWechatLogin(); }; if (typeof wx !== 'undefined') { // 初始化微信配置 wx.config({ debug: false, appId: 'your_app_id', timestamp: '', nonceStr: '', signature: '', jsApiList: ['scanQRCode'] }); } }, methods: { initWechatLogin() { if (!wx.config.checkJsApi({ jsApiList: ['scanQRCode'] })) { console.error('缺少微信扫描二维码API'); } else { // 扫码登录事件处理 this.$on('login', data => { wx.scanQRCode({ needResult: true, // 扫描结果由微信处理并返回给开发者 scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码,默认二者都有 success: res => { const code = res.resultStr; this.submitCode(code); }, fail: err => { console.log(err); } }); }); } }, submitCode(code) { // 将扫码得到的code发送到服务器,换取用户信息 fetch('/api/login/wechat', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ code }), }) .then(response => response.json()) .then(user => { // 登录成功后,可以设置sessionStorage或者vuex更新用户状态 localStorage.setItem('wechatUser', JSON.stringify(user)); // 或者调用其他页面或数据加载 }) .catch(error => { console.error('登录失败:', error); }); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值