uniapp小程序权限授权封装代码示例

 更新时间:2026年05月23日 08:32:50   作者:派大星jason  
在微信小程序中,用户公开信息包括昵称、头像等,这些信息可以通过微信授权获取,下面这篇文章主要介绍了uniapp小程序权限授权封装的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

封装原因

项目中会出现像用户拿地理位置信息或其他权限的需求,但是我们无法控制用户的操作,如果用户按要求给了我们相关权限那么项目就可以正常走下去,但是如果用户误触或者点击了拒绝,会导致项目缺少了某些数据(例如位置参数)导致无法继续进行下去。

而微信小程序除隐私授权外其他的大部分授权都是拒绝过一次后就不会再弹窗询问授权了,这会导致用户拒绝了一次权限后就不再询问授权,会导致用户一直使用不了小程序,从而导致使用体验

我们当然可以处理权限拒绝的情况,但是每次都写重复的代码不符合我们的预期(摸鱼ing...),所以将处理逻辑封装起来,每次需要用时调用即可

代码

/*
	获取用户授权(小程序专用)
	@scopeName 授权名称 参考文档:https://uniapp.dcloud.net.cn/api/other/authorize.html#scope-%E5%88%97%E8%A1%A8
	@tip 提示信息
	@cb 回调函数
*/
export const getSetting = function (scopeName, tip = '请在设置中开启授权', cb) {
	uni.getSetting({
		success: (res) => {
			if (res.authSetting[scopeName]) {
				// 已经授权,调用回调函数
				cb();
			} else if (res.authSetting[scopeName] === false) {
				// 用户已拒绝授权,引导用户到设置页面开启
				uni.showModal({
					title: '您未开启相关授权',
					content: tip,
					success: (res) => {
						if (res.confirm) {
							uni.openSetting({
								success(settingRes) {
									if (settingRes.authSetting[scopeName]) {
										// 用户打开了授权,调用回调函数
										cb();
									}
								},
							});
						}
					},
				});
			} else {
				// 首次使用,请求授权
				uni.authorize({
					scope: scopeName,
					success() {
						cb();
					},
					fail() {
						// 首次使用,用户拒绝授权,引导用户到设置页面开启
						uni.showModal({
							title: '您未开启相关授权',
							content: tip,
							success: (res) => {
								if (res.confirm) {
									uni.openSetting({
										success(settingRes) {
											if (settingRes.authSetting[scopeName]) {
												// 用户打开了授权,调用回调函数
												cb();
											}
										},
									});
								}
							},
						});
					},
				});
			}
		},
	});
};

使用示例

getSetting('scope.userLocation', '请在设置中开启地理位置授权', () => {
			console.log('地理位置授权成功');
		});

总结 

到此这篇关于uniapp小程序权限授权封装代码示例的文章就介绍到这了,更多相关uniapp小程序权限授权封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javascript刷新父页面方法汇总详解

    javascript刷新父页面方法汇总详解

    这篇文章主要介绍了javascript刷新父页面方法汇总详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • js实现简单进度条效果

    js实现简单进度条效果

    这篇文章主要为大家详细介绍了js实现简单进度条效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • js图片轮播手动切换特效

    js图片轮播手动切换特效

    这篇文章主要为大家详细介绍了js图片轮播手动切换特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 微信小程序实现拖拽功能

    微信小程序实现拖拽功能

    这篇文章主要介绍了微信小程序实现拖拽功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)

    BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页

    这篇文章主要介绍了BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)的相关资料,需要的朋友可以参考下
    2016-12-12
  • JavaScript中的集合及效率

    JavaScript中的集合及效率

    由于 JavaScript 的语言特性,我们可以向通用对象动态添加和删除属性。所以 Object 也可以看成是 JS 的一种特殊的集合。
    2010-01-01
  • javascript事件问题

    javascript事件问题

    咱们都知道,在DOM事件模型中,有捕获和冒泡两个阶段,而在IE事件模型中,只有冒泡阶段。写在html里的事件响应函数只有在冒泡阶段才会被执行
    2009-09-09
  • 使用Javascript实现复制粘贴功能的示例代码

    使用Javascript实现复制粘贴功能的示例代码

    本篇文章记录如何通过js代码实现复制内容到剪切板,之后可以粘贴到需要的地方的功能,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-09-09
  • 简单JS自动提示文本框代码

    简单JS自动提示文本框代码

    为了满足用户的方便,提供良好的自动提示功能就成为定级公司努力方向。废话少说,看例子
    2012-01-01
  • 微信小程序中实现车牌输入功能

    微信小程序中实现车牌输入功能

    我们都知道车牌是有一定规律的,本文实现了微信小程序中实现车牌输入功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05

最新评论