当前位置:网站首页>H5页面调用微信授权获取code
H5页面调用微信授权获取code
2022-08-02 00:16:00 【m0_67401382】
H5调用微信授权获取code(微信公众号微信页面开发网页授权)
一、首先你要有一个公众号(公众号、订阅号),微信公众平台配置。
1、获取基础信息(APPID(前后端都需要)、APPsecret(后端需要)、IP白名单(后端提供,配置在公众号这里))。

1647488321959-5071dd31-c39b-4894-843a-c8987361d5ed.png
2、配置网页授权域名(切记域名格式,不需要带上https://)

WechatIMG92.png
3、有校验文件需要下载下来给后端开发

WeChatf70182f098421638f795a47be284c194.png
二、前端开发
1、判断是否微信浏览器
// 判断是否为公众号模拟器环境
const isWechat = () => {
return String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger";
}
2、访问特定微信链接来获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

WeChat82135db29abd0e7497fe776df02201e7.png
3、截取code方法
getUrlCode() {
// 截取url中的code方法
var url = location.search;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
var strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
}
}
console.log(theRequest);
return theRequest;
},
4、上demo
// 判断是否为微信环境
const isWechat = () => {
return String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger";
}
export default {
data() {
return {
code: ''
}
},
onLoad() {
this.getWxCode()
},
methods: {
getWechatCode() {
if (isWechat) {
let appid = "公众号后台获取的APPID"; //微信APPid
let code = this.getUrlCode().code; //是否存在code
let local = window.location.href;
if (code == null || code === "") {
//不存在就打开上面的地址进行授权
window.location.href =
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
appid +
"&redirect_uri=" +
encodeURIComponent(local) +
"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
} else {
this.code = code;
}
}
},
getUrlCode() {
// 截取url中的code方法
var url = location.search;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
var strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
}
}
console.log(theRequest);
return theRequest;
},
}
}
5、调试工具(微信开发者工具)

WeChat1aeabd56b19142682a4e26695e8df80b.png

WeChatc272536731536f5b233523bc563f23eb.png
三、总结踩坑敲黑板
1、公众号后台重定向域名一定要配置和你开发测试环境一致
2、APPID、前后端一致
3、真机测试,微信右上角弹出框的复制链接是拿不到带有code链接的地址的,可以分享到QQ就能看到带有code的链接了。

WeChatcdd03618bde7e7586245969af9651314.png
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- String splitting function strtok exercise
- DFS详解
- Don't concatenate strings with jOOQ
- 面试:简单介绍你参与的一个项目
- 攻防世界-web-Training-WWW-Robots
- 辨析内存函数memset、memcmp、memmove以及memcpy
- MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界
- MLX90640 红外热成像仪测温传感器模块开发笔记(十) 成果展示-红眼睛相机
- 管理基础知识16
- Graphical LeetCode - 1161. Maximum Sum of In-Layer Elements (Difficulty: Moderate)
猜你喜欢

nodeJs--mime模块

这 4 款电脑记事本软件,得试试

Kunpeng compile and debug plug-in actual combat

Unknown CMake command “add_action_files“

Quick solution for infix to suffix and prefix expressions

Graphical LeetCode - 1161. Maximum Sum of In-Layer Elements (Difficulty: Moderate)

期货开户交返是行内公开的秘密

go笔记记录——channel

鲲鹏编译调试插件实战

ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
随机推荐
面试:简单介绍你参与的一个项目
渗透测试与攻防对抗——渗透测试基础
第 45 届ICPC亚洲区域赛(上海)G-Fibonacci
基于编码策略的电网假数据注入攻击检测
An Enhanced Model for Attack Detection of Industrial Cyber-Physical Systems
JS中的防抖和节流
含外部储能的电力系统暂态稳定分布式控制
C language character and string function summary (2)
MySQL常用语句整理
nodeJs--各种路径
C语言实现扫雷游戏
swing的Jlist列表滚动条以及增加元素的问题
管理基础知识9
Trie详解
测试点等同于测试用例吗
工业信息物理系统攻击检测增强模型
How to use the go language standard library fmt package
MLX90640 红外热成像仪测温传感器模块开发笔记(十) 成果展示-红眼睛相机
Grid false data injection attacks detection based on coding strategy
什么是低代码(Low-Code)?低代码适用于哪些场景?