vue项目:基于网页授权的微信扫码登录Demo

2020-09-01 18:23:26

开源一个 vue 项目实现:利用网页授权进行 PC 端扫码登录

之前研究了下微信端扫码登录的实现微信网页扫码登录和公众号网页授权登录的比较
因为微信开放平台的扫码登录需要认证(交钱),就稍微麻烦一点使用网页授权的方式来做 PC 端扫码登录。

实现思路

简要介绍

PC 端点击扫码登录时会生成一个 uuid 并弹出一个二维码,二维码地址(附带了生成的 uuid)是移动端的网页,微信扫码后打开的是配置好的网页授权链接,通过网页授权的方式获取 code 拿到用户 openid 或者 unionid 后存入数据库中,PC 端通过轮询方式根据生成的 uuid 作为参数来获取用户 id 进行登录

涉及技术

  • vue:2.6.11
  • vuex:3.1.2
  • vue-router:3.1.5
  • vue-qr:2.2.1
  • element-ui:2.13.0
  • vant:2.5.3
  • koa:2.11.0
  • mongodb:3.6.0

web 端

env 配置

ENV = 'development'
VUE_APP_BASE_API = 'http://localhost:2000'

#appid 可填入申请的测试公众号id或者其它准备好的ID
VUE_APP_WECHAT_APPID=''

#authUrl 网页授权中间页
VUE_APP_WECHAT_AUTH_URL='自己的域名/auth.html'

项目部署到服务器上之后可访问 auth.html(即 public 目录下的 auth.html)

安装依赖

npm install

开发

npm run serve

访问

http://localhost:9555

web 端默认使用 9555 端口

服务端

数据库服务由 mongodb 的 docker 镜像提供,如果已经安装了 docker 则可通过项目下的脚本启动容器

  • koa
  • mongodb(阿里云公开镜像)

执行run-mongo.sh脚本完成 mongodb 容器启动
创建数据库 runoob(可使用 adminmongo 图形化界面操作)

安装依赖

cd server
npm install

修改公众号配置,复制一份 config.sample.js 重命名为 config.js 填好如下配置


module.exports = {
  db: '', // mongodb的连接地址
  url: '', // 模板消息点击跳转地址
  template_id: '', // 模板消息ID
  appId: '', // 公众号appid
  appSecret: '', // 公众号secrect
}

启动服务

node app.js

访问地址

http://localhost:2000

服务端接口使用 2000 端口

公众号配置

  • 授权回调页面域名
    • 项目基于网页授权实现的扫码登录,所以需要在公众号管理后台修改网页授权获取用户基本信息的 授权回调页面域名
  • 模板消息
    • 如果需要发送登录模板消息则要添加下可用的登录提醒模板

在线 Demo

http://scancode.xuedingmiao.com

参考资料

本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

扫描下方二维码阅读当前文章

浏览器、微信扫码

评 论:

好文推荐
每天进步一点点~