uniapp 授权,用户拒绝之后重新调用

文章描述了在uni-app中处理录音授权的过程,当用户点击事件时,会调用uni.authorize进行录音权限的授权请求。如果用户允许授权,将启动录音定时器和录音管理器;若用户拒绝,会弹出提示询问用户是否去设置中打开录音权限。在用户从设置返回后,会检查权限状态并相应地启动或不启动录音功能。
摘要由CSDN通过智能技术生成

记录一下今天的录音授权

//这个是写在点击事件里面的
let that = this
uni.authorize({
	scope: 'scope.record',//这里选择scope.(录音、位置、用户信息...都可以)
	success() { //1.1 允许授权
		that.timer = setInterval(that.startTimer, 1000),//录音定时器
		recorderManager.start()//开始录音
	},
	fail() { // 拒绝授权
		uni.showModal({
		    content: '检测到您没打开录音功能权限,是否去设置打开?',
			confirmText: "确认",
			cancelText: '取消',
			success: (res) => {
				if (res.confirm) {
					uni.openSetting({//opensetting是调起设置页面的
						success: (res) => {
							console.log(res.authSetting);
								if(res.authSetting == true){//判断res.authsetting的值是true还是false
									that.timer = setInterval(that.startTimer,1000),
							               recorderManager.start()
								}else{
									console.log("什么也不做");
									}	
								}
							})
					} else {
						console.log('取消');
						return false;
					}
				}
			})
			return false;
		}
	})

uniapp实现用户登录的步骤如下: 1. 在页面创建时的created方法中判断用户是否登录,可以通过本地缓存的token来调用服务端接口返回用户信息。如果没有token,则需要进行微信授权。 2. 判断用户是否授权,可以使用微信小程序官方文档提供的API wx.getSetting,返回值中会显示小程序已经向用户请求过的权限。如果用户拒绝授权,则登录授权逻辑结束。 3. 如果用户已经授权,可以调用微信小程序官方API wx.getUserInfo或uniapp集成的微信小程序API uni.getUserInfo来获取用户的头像、昵称、openid等个人信息。注意,如果用户的scope.userInfo权限已经被回收,可以使用昵称和头像填写来进行完善用户信息。 4. 调用服务端的登录注册逻辑,完成登录或注册操作。登录或注册成功后,将服务端返回的token信息放在本地的storage缓存中。 5. 使用vuex的storage来实现用户登录状态的管理。 参考代码如下: ```javascript // 页面创建时的created方法中判断用户是否登录 created() { if (!this.isLogin()) { // 用户未登录,进行微信授权 this.wxAuthorize() } else { // 用户已登录,显示用户登录成功之后的头像昵称信息 this.showUserInfo() } }, methods: { // 判断用户是否登录 isLogin() { // 判断本地缓存中是否存在token信息 const token = uni.getStorageSync('token') return !!token }, // 微信授权 wxAuthorize() { wx.getSetting({ success: (res) => { if (res.authSetting['scope.userInfo']) { // 用户授权,获取用户信息 this.getUserInfo() } else { // 用户授权,进行登录授权逻辑结束 // TODO: 处理未授权情况 } } }) }, // 获取用户信息 getUserInfo() { // 调用微信小程序API获取用户信息 wx.getUserInfo({ success: (res) => { const userInfo = res.userInfo // TODO: 处理用户信息 // 调用服务端完成登录注册逻辑 this.loginOrRegister(userInfo) } }) }, // 登录或注册 loginOrRegister(userInfo) { // 调用服务端的登录注册接口 // TODO: 处理登录注册逻辑 // 登录或注册成功后将token信息放在本地storage缓存中 uni.setStorageSync('token', 'xxxxx') // 显示用户登录成功之后的头像昵称信息 this.showUserInfo() }, // 显示用户登录成功之后的头像昵称信息 showUserInfo() { // TODO: 显示用户登录成功之后的头像昵称信息 // 可以通过触发全局自定义事件实现,在me.vue页面加载监听该事件 uni.$emit('meUserLogin') } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值