通过微信登录pc的实现方案

场景:用户登录方式可选微信扫码登录

 

方案

微信的二维码登录有多种方式,如公众号扫码登录,弹窗二维码登录,而我们选择的是内嵌式二维码登录。官方文档:微信登录功能 / 网站应用微信登录开发指南 (qq.com)

 

实现步骤:

准备工作,需要在微信开放平台创建应用并获取到appidappSecret

 

第一步:引入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等,就算完成了哈!