先调用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,
});
}
})