H5之微信授权登陆 (uniapp网页版微信授权登录)

2023-11-03

今天来复盘代码了 不然这个月过完 我可能脑子里又啥都不剩了 感觉自己跟个金鱼脑一样 十分沧桑
在这里插入图片描述
1.首先 要做微信授权登录 你的有一个微信公众号 因为授权登录要配置APPID 以及网页授权域名

这里的网页授权域名真的让我栽了好多的坑一言难尽 啥也不说了 直接上图
公众号的开发 —>基本配置中设置
在这里插入图片描述
**接下来在公众号的开发 —>接口权限中设置域名 **
这个域名一定要正确 而且是安全域名 因为不仅代码放在上面 微信授权回调的域名也是这个
在这里插入图片描述
在这里插入图片描述

在网页服务中的 页面授权用户基本信息中设置 一共可以设置两个 一个开发环境 一个测试环境

设置完就可以开发了 开发前建议看一变官方文档 当然如果没看懂 可以多看几遍 链接我放在这里了
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0

然后就是页面了

因为后期我得代码都带了token请求头 所以我写了一个跳转页面

在这个界面拉起授权 授权成功获取到信息之后在跳转到 首页
(ps:我把这个页面放在了pages.json)的第一个 这样一进来就能授权了

废话不多说上代码:

对了请注意下面的那个拉取基本信息的链接中的重定向路径和appid被我隐藏了 请大家自己配置
将URL 及 APPID 替换成自己的即可 至于如何获取请看上面 上面配置的域名就是这里重定向的路径

跳转界面springboard.vue

<template>
	<view class="springboard">
		
		<view class="">
		code:{{res}}
		</view>
		<view class="">
			access_token接口:{{result}}
		</view>
		<view class="">
			access_token :{{access_token}}
			<view class="">
				openid:{{openid}}
			</view>
		</view>
		<view class="">
			用户信息 {{userInfo}}
		</view>
		<!-- 跳板页面   这个界面主要用来 获取缓存的信息 如果没有缓存的信息则跳转去授权 如果有直接跳转去商城界面-->
	</view>
</template>

<script>
	export default {
		data() {
			return {
				src:'',
				result:'',
				option:'',
				res:'',
				userInfo:'',
				access_token:'',
				openid:'',
				index:0
			};
		},
		methods:{
			getpower() {
				
				let url =
					"https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect"
							
				window.location.href = url
			},
			sendCode(code){
				uni.showToast({
					title:code
				})
				
				uni.request({
				    url: 'XXXXXXX/login/login_controller/access_token',
				    method:'POST',
					data: {
				        code: code
				    },
				    success: (res) => {
				        console.log(res.data);
				        this.result = res.data
						this.access_token = this.result.data.access_token
						this.openid = this.result.data.openid
						uni.request({
						    url: 'XXXXXXX/login/login_controller/access_user', //仅为示例,并非真实接口地址。
						    method:'POST',
							data: {
						       	access_token:this.access_token,
						       	openid: this.openid
						    },
						    success: (respones) => {
								this.userInfo = respones
						        console.log(res.respones);
								
						    }
						});	
				    }
				});
			},
		},
		onLoad(option) {
			this.option = option
			if (option.code == null) {
				this.getpower()
			} else {
				this.res =  option.code
				// uni.showToast({
				// 	title:option.code
				// })
				this.sendCode(option.code)
			}
		}
		
	}
</script>

<style lang="less" scoped>
.springboard{
	height: 99vh;
	position: relative;
	text-align: center;
	background-size: cover;
	// background-image: url('http://zons.oss-cn-shenzhen.aliyuncs.com/upload/20200703/20200703/1593768723d3eb9a9233e52948740d7eb8c3062d14.jpg');
	// background-image: url('http://zons.oss-cn-shenzhen.aliyuncs.com/upload/20200703/20200703/1593768995d3eb9a9233e52948740d7eb8c3062d14.jpg');
}
.LoginBtn{
	width: 50%;
	border: 1px solid  #409eff;
	padding:20rpx  ;
	display: inline-block;
	background-color: #409eff ;
	color: #fff;
	border-radius: 10rpx;
}
</style>

这里说明一下 做授权的时候 无法在线测试 就是说本地的代码无法测试 必须发包放到服务器上测试

所以我把返回值都展示在页面上就知道接口是否有问题了 后期自行屏蔽即可

另外踩了一个巨坑 就是微信授权返回40029 code码失效的问题
查了很多资料 也设置了 好几种方法

最后根据自身情况就是 第一 发包以后到手机端测试 或者在微信开发者工具中测试 注意 就算是微信开发者工具中测试也是跑的线上的代码 其次为了防止发生302不稳定跳转 防止code码失效 我添加了connect_redirect=1

踩坑二:如果在微信开发者工具中运行时出现 response_type 参数错误 那么就是拉起授权的链接有问题了 请重新配置

踩坑三 后端的接口配置的使用到的APPID 要与前端一致

最后说一下两个接口

第一个接口时获取到code码以后 将code码传给后端 后端 用code码获取到 openID 然后可以根据 openID 获取到用户个人信息

这里第二个接口就是根据第一个接口的返回值 获取用户个人信息的 抓到用户信息代表授权成功了
**注意注意注意!!!**请求要使用post

好啦 到这里基本就讲解完毕了 下一篇在具体讲下 踩到的坑以及几种解决方法

希望对大家有用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

H5之微信授权登陆 (uniapp网页版微信授权登录) 的相关文章

随机推荐

  • 【Seata】03 - Seata AT 模式全局锁相关知识简单整理

    文章目录 前言 参考目录 版本说明 分析整理 1 全局锁的引入说明 2 全局锁相关源码整理 2 1 流程简图 2 2 事务分支注册前的 SQL 相关操作 2 3 注册分支 获取全局锁 前言 上一篇文章介绍了 AT 模式的调用流程 但是有个比
  • Unity位置动画

    1 场景中创建一个Cube 2 为这个Cube添加Animator组件 3 选中这个Cube 然后选择Window Animation 打开animation窗口 下面就开始K关键帧了 很简单 两步走 1 选中这个Cube对象 在第0帧 移
  • Java读取.zip文件为ZipInputStream,并读取压缩文件。

    最近遇到一个需求 要调取接口获取一个zip文件流 解析zip包 读取启动的文件内容来进行业务处理 以下是处理读取zip压缩包方法 话不多说直接上代码 读取zip文件流 解析压缩文件 public static void main Strin
  • 【blockly教程】第一章 Google Blockly教学应用手册

    1 1 Google Blockly概述 美国计算科学教育一直认为计算机作为当今各个领域的基础技术工具 有必要让学生尽早的了解和学习计算机工作原理 理解基础的编程思维 在2006年周以真教授提出计算思维概念 这很大程度上促进了人们对计算机编
  • POI getDataFormat() 格式对照

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 参照org apache poi ss usermodel BuiltinFormats的说明 Open Declaration org apache poi ss use
  • C#获得DataGrid单元格的值

    WPF中的DataGrid控件类似于WindowsForm中的DataGridView 但是DataGridView中的单元格值获取非常简单直观 如下 string cellvalue datagridview Rows rowindex
  • RuntimeError: CUDA error: device-side assert triggered

    RuntimeError CUDA error device side assert triggered解决办法 这是由于数据标签默认是从0开始的 比如标签类别为5类 默认是 0 1 2 3 4 而自己是 1 2 3 4 5 只需要在标签数
  • Scala的基础语法(超详细版)

    Scala的基础语法 文章目录 Scala的基础语法 1 声明值和变量 2 数据类型 3 算术和操作符重载 4 控制结构语句 4 1条件分支语句 4 2循环语句 5 方法与函数 5 1方法 5 2 函数 5 3 方法转换成函数 1 声明值和
  • python爬虫-北京租房可视化分析

    目的 使用scrapy框架爬取租赁信息 对数据进行处理利用python中的seaborn matplotlib库进行可视化分析 最后查看昌平区待租量排前十小区对应地铁站点 及其平均租房价格 1 爬虫 使用scrapy框架爬取beike租房信
  • chatGPT做算法题

    今天突发奇想 自己编了一道算法题让newbing和chatgpt做 问newbing后 没搜索到相关内容 回复无法理解题目 问chatGPT后给出了回答 见下图 一开始我很震惊 算法居然如此简洁 我知道这个题可以用动态规划解 但是算法也没有
  • CocosCreator查找图片引用

    相信大家可能需要查找图片在哪个Prefab中使用到 于是我们像下图这样查找一下 查找的时候CocosCreator会给出我们查找的图片资源的uuid 比如 我的uuid 33a791ca 5a28 4c2a b451 7c6b8f9a037
  • 简单C语言两数相加

    在C语言中 相加两数是一个基本的要求 但其实也有复杂操作 比如高精度加法 或者链表相加 还要考虑进位 都是比较难的 那么今天我们来聊一聊简单的problem a b 先发代码 include
  • hiveSQL基本语句三-----连接查询--inner join、left join、full join、union all、union

    一 inner join 连接2个表 取出公共部分 必须重命名 on后连接条件键值唯一 连接前注意去重 提高效率 inner可省略 select from user list 1 as a inner join user list 2 as
  • keras图像风格迁移

    风格迁移 在内容上尽量与基准图像保持一致 在风格上尽量与风格图像保持一致 1 使用预训练的VGG19网络提取特征 2 损失函数之一是 内容损失 content loss 代表合成的图像的特征与基准图像的特征之间的L2距离 保证生成的图像内容
  • 创客教育的法则

    认为创客教育顾名思义是创造客户价值的意思 那可就错了 创客是教育培训行业里的一个专用名词 属于新型创新的模式 格物斯坦提醒 想要进行创客教育的学生 老师以及家长们 要谨慎选择合适的创客教育培训机构 这样才能万无一失 核心注重课程体系的自主研
  • vscode+gcc+jlink调试mcu程序(用于替代IDE)

    一 前言 几年前写过一篇类似的文章 那时是用于调试rtthread系统 使用 VSCode arm none eabi gdb J Link GDB Server 调试RTThread 当时有关vscode和gcc调试MCU的文章很少 所以
  • golang中数组和切片的区别与联系

    golang中数组和切片的区别 切片时指针类型 数组是值类型 数组的长度是固定的 而切片不是 切片是动态的数组 切片比数组多一个属性 容量 cap 切片的底层是数组 既然一个是指针类型 一个是值类型 那么区别体现在哪里呢 看下这个例子 nu
  • 思科模拟器Cisco Packet Tracer安装指南

    前言 本篇为思科模拟器Cisco Packet Tracer的官方英文正版安装指南 官方英文正版虽然可以免费使用 但是要登录思科账户 账户同时登录思科旗下的网络学院并订阅课程和完善个人资料 本篇会教你怎么一步一步去完成这些 而且绝大部分还是
  • 最常犯的 HTML 标识错误 Top 100

    国外的一个网站 W3CLove 最近对在其网站上进行的 45 万的网页验证进行统计 下面是最频繁的错误和警告列表 W3CLove是一个用来验证网页编写是否规范的在线网站 不过用它来测试 oschina 页面的时候 提示错误 Sorry we
  • H5之微信授权登陆 (uniapp网页版微信授权登录)

    今天来复盘代码了 不然这个月过完 我可能脑子里又啥都不剩了 感觉自己跟个金鱼脑一样 十分沧桑 1 首先 要做微信授权登录 你的有一个微信公众号 因为授权登录要配置APPID 以及网页授权域名 这里的网页授权域名真的让我栽了好多的坑一言难尽