[对接] pc网站接入微信扫码登录

一、总体流程

  1. 公司注册微信开放平台账号,并认证开发者资质(需要300块,只用交一次);

  2. 创建网站应用,获取AppID和AppSecret;

  3. 前端在登录页嵌入微信二维码,并将扫码成功后重定向携带的code传给后端;

  4. 后端调用微信接口,先获取access_token,再获取用户信息(包含昵称、头像、UnionID);

  5. 判断扫码用户是否关联网站账号(UnionID + 手机号 + 网站账号,三者关联);

  6. 没有关联就是首次登录,需要绑定手机号并发送短信验证码(证明手机号真实性)。

graph LR 微信扫码 --> 获取微信用户信息 --> 允许 -- 首次 --> 输入手机号绑定 --> 发送短信验证码 --> 进入首页

二、前端代码

js 复制代码
<div id="wxqrcode-container"></div>;

if (WxLogin) {
    const origin = location.origin;

    // 重复调用可以刷新二维码
    new WxLogin({
        self_redirect: false, // 不改
        id: 'wxqrcode-container', // 二维码容器的id
        appid: APP_ID, // 网站应用的AppID
        scope: 'snsapi_login', // 不改
        redirect_uri: encodeURI(`${origin}/login`), // 重定向地址,通常是登录页地址(注意域名必须和网站应用的授权回调域名一致)
        state: '', // 重定向要带的参数,可以防止csrf攻击(加载二维码前从后端拿state值,扫码后再将state和code一起传回后端,后端验证state是否相同)
        style: 'black', // 文字颜色,只有黑白
        href: `${origin}/wxqrcode.css`, // 二维码的样式文件
    });
}

const code = location.search.split('code')?.[1]?.slice(1);

if (code) {
    // TODO: 将code传给后端
}

三、微信不同应用间的信息互通

网站既有pc站点也有对应的小程序,那在小程序登录后,pc还需要重新绑定手机号吗?

不需要。利用UnionID机制就能实现用户信息互通,因为只要是同一个微信开放平台账号下的移动应用、网站应用、公众号、小程序,用户的UnionID是唯一的(即同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的)。

网站应用最后获取的用户信息包含UnionID;小程序通过wx.login获取用户的UnionID。

四、参考文章

  1. 网站应用微信登录开发指南
  2. UnionID机制说明
相关推荐
风安•辛幸2 天前
mac上微信最新v4以上版客户端多开教程,亲测可用
macos·微信
智购科技无人售货机厂家2 天前
2026自动售货机出货口防夹手设计:从红外检测到电机反转的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信
QH139292318802 天前
R&S FSPN50 FSPN26 FSWP26 相位噪声分析仪典型应用案例
人工智能·百度·微信·集成测试·音视频·facebook·oneapi
UWA3 天前
GPM 2.0 WebGL 监测能力扩容|覆盖 Unity/Cocos/LayaAir 多引擎微信 & 抖音小游戏
unity·微信·性能优化·小游戏·webgl
运营秋秋4 天前
微信定时群发:设置一次自动触达
微信
极客互动API8 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
极客互动API8 天前
企业微信 iPad 协议消息接口开发:文本 / 图片 / 群发消息的统一封装
人工智能·ios·微信·机器人·企业微信·ipad
Chengbei119 天前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
2501_9419820510 天前
个人微信API二次开发:多开回调串appId
微信
wechatbot88813 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa