微信公众号H5开发 网页授权拿code流程

#项目背景介绍:

我们的项目后端需要获取获取code所以,前端需要通过 网页授权拿取用户的code (这个code是后端需要的,咱们不管,咱们前端需要解决的时,怎么通过网页授权去拿到这个code 这是关键)

#网页授权链接:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect` 其中 appId 是你公众号的appid ; redirectUri 是你的回调链接 下面会详细讲解

现在开始走流程:

一、进行网页授权的准备:(做一些相关配置配置)
1、第一步:首先要去你自己的公众号的后台 设置与开发 =》账号设置 =》 功能设置 配置你的域名 不用加 前缀 http:// h或者https:// 只需要配置后面的域名即可

微信公众号H5开发 网页授权拿code流程

2、第二步:想要第一步配置成功,你就必须要完成第二步! 当你进行第一步时,一定会提醒你,让你下载 .txt文件是吧? 哈哈,那就对了,你需要先按照下图,点击下载文件,将下载好的文件 放到你们的服务器目录下(同你打包好的文件是同级目录下)

微信公众号H5开发 网页授权拿code流程

3、第三步:完成前面的两步,最后一步,你只需要填好你需要配置的域名,点击保存就行啦!

4、第四步:其实到第三不已经完成基础配置了! 我再送一点干货咯! 如果你的项目要对接微信支付 并且使用JSAPI 那么 还需要在该页面 配置一下 JS接口安全域名

微信公众号H5开发 网页授权拿code流程

二、基础配置完成,就直接进入项目实操了
1、网页授权,在哪里授权? 怎么授权?
答:你想在哪里授权都行! 怎么授权,让我直接给你上代码吧,废话少说!

2、不管你在那个页面进行授权,进入页面,你第一步就是要调微信官方的网页授权地址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`

2.1、那么第一步:既然是在微信环境下:我们就直接上代码,判断当前环境是微信环境吗? 不是你授权个屁呀!

// 判断是否微信环境
isWeixinBrowser() {
return /micromessenger/i.test(navigator.userAgent)
},

2.2 是微信环境,咱们直接就开始调

// 获取微信授权code
async getWechatCode() {
if (!this.isWeixinBrowser()) {
uni.$u.toast(‘非微信环境,无法登录’)
this.visible = false
return
}

//先尝试从本地获取code
let wx_code = AuthStorage.getAuthCode()
//如果没有或者过期,重新授权获取
if (!wx_code) {
// 1. 检查URL中是否有code(微信回调时会有)
const code = this.getUrlParam(‘code’);
if (code) {
this.form.authCode = code;
//有code 存储本地
AuthStorage.setAuthCode(code)
this.clearUrlCode(); // 清除URL中的code参数
return;
}

const appId = “你自己的appID”
// 2. 没有code则跳转授权
const redirectUri = encodeURIComponent(window.location.href);
window.location.href =
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`;
} else {
//如果有就直接 赋值 将你获取到的code存起来 后面要传给后端
this.form.authCode = wx_code
}
},

//获取回调code
getUrlParam(key) {
const params = new URLSearchParams(window.location.search);
return params.get(key);
},

//清理路径上的参数
clearUrlCode() {
if (window.history.replaceState) {
const cleanUrl = window.location.origin +
window.location.pathname +
window.location.hash;
window.history.replaceState({}, ”, cleanUrl);
}
},

这里code 我为什么要保存本地,因为code有效时间是五分钟,如果用户在这五分钟内,反复去授权拉取,就会一直去回调,用户体验不太好,所以小编就将其缓存起来 超过5分钟就给它删掉,当用户登录成功或失败后,也要删掉!

2.3、那么回调以后,页面会重新刷新,微信官方会就你传给他的当前页面的链接,返回来并带有code,你只需要在 你的钩子函数里面 去拿到链接嘛 看看链接上有没有携带code ,有的话你就存起来,走你自己的逻辑

onLoad() {
//网页授权回调 携带code
const url = new URL(window.location.href);
const params = new URLSearchParams(url.search);
if (params.get(‘code’)) {
//这里走你的登录逻辑或者干其他的啥随你遍咯
}
},

3、至此,你想要的code,完美拿到手,想咋用咋用,搞定!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"dtmb.taobao.com",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性

山喂资源分享 网页素材 微信公众号H5开发 网页授权拿code流程 https://www.023140.com/671.html

微信公众号H5开发 网页授权拿code流程
下一篇:

已经没有下一篇了!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务