uniapp获取微信运动步数

该文章详细描述了如何使用uni-app结合微信API获取用户微信运动步数的过程,包括调用uni.login获取code,使用wx.getWeRunData得到加密数据,然后通过后端接口处理这些数据以换取步数信息。同时,文章提到了在用户授权设置中的处理逻辑,以及在Vuex中封装的action来处理权限检查和授权请求。
摘要由CSDN通过智能技术生成

wx.getWeRunData接口文档 

 先调用login换取code,然后调用wx.getWeRunData,在成功的回调中调用后端同学的接口,传code,iv,encryptedData,其实后端不需要code,需要sessionkey,但是sessionkey需要通过code和code2session服务端接口取获取,就可以换取微信运动步数了,这里要注意的是微信步数的timestamp字段单位是秒!!!!,如果用Date对象操作的时候需要乘1000!!!

	uni.login({
					provider: 'weixin',
					success: async function(e) {
						// console.log("login参数", e);
						if (e.errMsg == "login:ok") {
							wx.getWeRunData({
								async success(result) {
									// console.log("微信运动成功参数", result);
									var data = {
										code: e.code,
										iv: result.iv,
										encryptedData: result.encryptedData,
										userId: state.userInfo.userId
									}
									try {
										let res = await step(data)
										if (res.state === 1) {
											commit("set_wxStepNum", res.content)
										}
										resolve(res);
									} catch (e) {
										reject(e);
										uni.$u.toast(`${e}`)
									}
								}
							})
						} else {
							uni.showToast({
								title: "获取微信步数失败",
								icon: 'none',
								duration: 2500
							})
						}
					},
					fail: () => { //uni.login 失败的回调
						uni.showToast({
							title: '授权已取消',
							icon: 'error',
							mask: true,
						});
					}
				})

后续 发现这个还是最好写在是否有这个权限的判断里面

封装的vuex的action

getAuthority({ commit, state }, val) { //val:权限名称 和触发函数
			return new Promise(async (resolve, reject) => {
				let authorityMap = {
					'scope.werun': '微信运动'
				}
				if (state.hasLogin) {
					uni.getSetting({
						async success(res) {
							// console.log(res);
							if (!res.authSetting[val.type]) {
								uni.authorize({
									scope: val.type,
									async success(res) {
										await val.method()
									},
									fail() {
										uni.showModal({
											content: `为了您良好的用户体验,请允许${authorityMap[val.type]}权限`,
											showCancel: false,
											success() {
												uni.openSetting({
													async success(settingdata) {
														if (settingdata.authSetting[val.type]) {
															await val.method()
														} else {
															console.log('获取权限失败')
															uni.showToast({
																title: '获取权限失败',
																icon: 'error',
																duration: 2000
															})
														}
													}
												})
											}
										})
									}
								})
							} else {
								await val.method()
							}
						}
					})
				}

			})
		},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柑橘乌云_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值