vue 微信登录
创始人
2024-03-12 08:57:06
0

文章目录

  • 前言
  • 一、第一步用户授权获取code
    • 1、PC扫码
      • 方式一
      • 方式二:
      • 踩坑记录
    • 2、移动端微信内置浏览器授权获取code
  • 二、第二步 通过code获取access_token
  • 三、获取用户个人信息


前言

网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的 AppID 和AppSecret,申请微信登录且通过审核后,可开始接入流程。
流程图:
在这里插入图片描述
网站应用微信登录开发指南

一、第一步用户授权获取code

1、PC扫码

方式一

在这里插入图片描述
在这里插入图片描述

let APPID = "这个是申请的APPID";
let REDIRECT_URI = encodeURIComponent("这个是在微信开发工具网页端的地方填写的地址 - 授权回调域 中 后面可添加");
this.codeUrl= `https://open.weixin.qq.com/connect/qrconnect?appid=${APPID}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect`;
 

方式二:

在页面中先引入如下 JS 文件(支持https):

http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js

页面中使用

  // 第二种方法获取微信二维码
let APPID = "这个是申请的APPID";
let REDIRECT_URI = encodeURIComponent("这个是在微信开发工具网页端的地方填写的地址 - 授权回调域 中 后面可添加");this.urltest = `https://open.weixin.qq.com/connect/qrconnect?appid=${APPID}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect`;var obj = new WxLogin({self_redirect: false,id: "login_container",appid: APPID ,scope: "snsapi_login",redirect_uri: REDIRECT_URI ,state: "A123DC35165464",style: "black",href:"data:text/css;base64,LmltcG93ZXJCb3ggLm5vcm1hbFBhbmVse21hcmdpbi10b3A6IDE1cHg7fQouaW1wb3dlckJveCAucXJjb2RlIHt3aWR0aDogMjMwcHg7Ym9yZGVyLWNvbG9yOiNDNUUxRkY7fQouaW1wb3dlckJveCAudGl0bGUge2Rpc3BsYXk6IG5vbmU7fQ==",});

在这里插入图片描述

踩坑记录

    1. 回调地址必须和回调域中填写的一直,不支持二级域名。
    1. 项目运行域名要在公众号同一域下(不确定)

2、移动端微信内置浏览器授权获取code

在这里插入图片描述
在这里插入图片描述
微信网页开发网页授权:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

// 是微信端浏览器——公众号let APPID = "开发者工具公众号平台注册的地方";let REDIRECT_URI = encodeURIComponent(“重定向地址”);let URL = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${APPID}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=snsapi_login&state=STATE&connect_redirect=1#wechat_redirect`;window.location.href = URL;

关于网页授权的scope的区别说明

  1. 以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
  2. 以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
  3. 如果为网页应用则填写snsapi_login
  4. 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

二、第二步 通过code获取access_token

在上边pc扫码或者微信内置浏览器中授权登录后,会重定向到我们指定的地址。
例:域名/login/wechat/callback?code=071w80Ga1DIkmE0tdhHa1hA3QU0w80Gn&state=test
可以看到回调地址会有code和state两个参数

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

在这里插入图片描述
正确的返回:

{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN","openid":"OPENID", "scope":"SCOPE","unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

在这里插入图片描述
错误返回样例:

{"errcode":40029,"errmsg":"invalid code"}

返回openId和unionId这个时候就可以跟自己的业务进行关联了

三、获取用户个人信息

http请求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

在这里插入图片描述
返回说明
在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

准确适用法律,有效震慑“职业闭... 据媒体报道,上海市公安局经侦总队近日牵头侦破一起新型“职业闭店人”合同诈骗案,抓获顾某、韩某等4名犯...
男子分居期间贷款32.5万元买... 12月24日,记者从新疆法治报获悉:近日塔城地区中级人民法院审结了一起案件,明确表明车贷因未用于共同...
盛路通信(002446)披露与... 截至2025年12月25日收盘,盛路通信(002446)报收于10.75元,较前一交易日上涨10.0...
德州新华书店组织专题研讨 深入... 大众网记者 张冉 通讯员 李晓腾 德州报道 近日,德州新华书店组织召开全民阅读相关政策专题研讨交流会...
阿尔及利亚立法认定“法国殖民是... 阿尔及利亚国民议会(众议院)24日晚表决通过法案,将法国对这个非洲国家曾经的殖民统治定性为“犯罪”,...
专访鲁政委:结构性货币政策工具... 2025年,站在“十四五”收官与“十五五”规划谋篇的历史衔接点上,中国经济在多重变局中展现出韧性,金...
广末凉子有望明年复出!曾飙速1... 搜狐娱乐讯 据日媒,广末凉子有望明年正式复出,相关人士称她一直很规矩,会向各界发邮件汇报近况,“这次...
浙江东日(600113)发布投... 截至2025年12月25日收盘,浙江东日(600113)报收于67.29元,较前一交易日上涨4.34...
广电网络:近12个月累计诉讼及... 中证智能财讯 广电网络(600831)12月25日晚间发布累计诉讼、仲裁情况公告,近十二个月内,公司...
封关后第一批!198公斤椰子油... 12月23日,海南保亭黎族苗族自治县一家食品企业生产的198公斤初榨椰子油,通过海口新海港和南港“二...