uni微信小程序获取微信运动权限

uni微信小程序获取微信运动权限

需求

我有一个需求,就是在小程序的首页需要获取一下微信步数,这样拆分一下就是首次进入小程序时,需要获取用户授权,如果用户允许授权并且微信有打开微信运动健康功能,那么就直接展示步数,如果用户拒绝了授权,那么当我再次点击这块区域的时候就要重新获取授权。

第一版

代码如下

onload(){
   
	uni.authorize({
   
		scope: 'scope.werun',
		success() {
   
			// 用户授权成功,获取运动数据
			wx.getWeRunData({
   
				success(res) {
   
					// 获取加密数据
					const encryptedData = res.encryptedData;
					const iv = res.iv;
	
					// 调用服务器端的接口进行解密(需要开发者后台处理)
					request.post('/wx/getXXX', {
   
						encryptedData: encryptedData,
						iv: iv
					}).then(res => {
   
						that.todaySteps = res.steps;});
					},
				},
				fail() {
   
				}
			})
		},
		fail() {
   
			console.log('用户拒绝授权')
		}
	});
}

代码解析:

  • 这个代码在页面初始化加载的时候使用uni.authorize获取了用户授权
  • scope: ‘scope.werun’, 微信运动
  • 获取权限后使用wx.getWeRunData()方法获取到了用户的encryptedData 和 iv
  • 将encryptedData 和 iv传给后台接口解密获取微信步数

问题

这版代码写出来以后,同事提出了几个问题

  1. 问题一:如果用户第一次拒绝授权以后后面又想获取步数怎么办?
  2. 问题二:如果用户本身微信就没开微信运动这个功能怎么办?

为了解决上面的两个问题,我针对代码做了一下改动,于是就有了下面的

第二版

代码如下

首先我给这个没有数据的view标签绑定了点击事件,来去获取步数,我觉得这样应该就好了

<view v-if="!todaySteps" @click=getSteps()>{
  {todaySteps}}</view>

javascript代码这块就是做了一下函数封装,其他也没什么改动

onload(){
   
	this.getSteps()
},
methods: {
   
	getSteps(){
   
		uni.authorize({
   
			scope: 'scope.werun',
			success(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值