番禺建设网站多少钱,深圳网站建设公司jm3q,爱论坛,抑郁症状有哪些表现免费咨询微信步数获取的背景
微信步数是指用户在微信运动中记录的步数数据。微信提供了开放能力#xff0c;允许第三方应用获取用户授权后的微信步数数据#xff0c;以便进行进一步的数据分析和展示。使用时报错#xff1a;fail api scope is not declared in the privacy agreemen…微信步数获取的背景
微信步数是指用户在微信运动中记录的步数数据。微信提供了开放能力允许第三方应用获取用户授权后的微信步数数据以便进行进一步的数据分析和展示。使用时报错fail api scope is not declared in the privacy agreement。出现这些问题是因为 隐私政策 需要更新
后台设置
去小程序后台设置-服务内容声明里补充用户隐私协议用到的api都需要加上然后审核通过后再试试如果还不行重新提交发版小程序试试。 获取用户授权
要获取用户的微信步数数据首先需要用户的授权。在UniApp中可以使用uni.login()函数获取用户的登录凭证然后将该凭证发送到后台服务器再由后台服务器向微信服务器请求用户的授权。
uni.login({success: res {if (res.code) {// 将res.code发送到后台服务器}}
});后台服务器获取步数授权
后台服务器收到用户的res.code后可以使用微信提供的登录凭证校验接口获取用户的openid。然后通过获取的openid再向微信服务器请求步数授权。
获取用户微信步数
wx.getWeRunData({success: res {const encryptedData res.encryptedData;const iv res.iv;// 解密步数数据并进行进一步处理}
});数据解密和处理
由于微信步数数据是加密的需要使用解密算法对数据进行解密。解密后的数据包括步数、时间戳等信息可以根据需求进行进一步的数据处理和展示。有两种揭秘方式。
后端解密
将得到的数据传递给后台由后台调用微信服务端接口解密
前端解密
云函数获取微信步数
通过cryptojs解密encryptedData获取微信步数 1.安装 npm install crypto-js 2.在utils下创建WXDataCrypt.js文件 // 引入CryptoJS
var Crypto require(cryptojs/cryptojs.js).Crypto;
var app getApp();function WXDataCrypt(appId, sessionKey) {this.appId appIdthis.sessionKey sessionKey
}WXDataCrypt.prototype.decryptData function (encryptedData, iv) {// base64 decode 使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码var encryptedData Crypto.util.base64ToBytes(encryptedData)var key Crypto.util.base64ToBytes(this.sessionKey);var iv Crypto.util.base64ToBytes(iv);// 对称解密使用的算法为 AES-128-CBC数据采用PKCS#7填充var mode new Crypto.mode.CBC(Crypto.pad.pkcs7);try {// 解密var bytes Crypto.AES.decrypt(encryptedData, key, {asBpytes:true,iv: iv,mode: mode});var decryptResult JSON.parse(bytes);} catch (err) {console.log(err)}if (decryptResult.watermark.appid ! this.appId) {console.log(err)}return decryptResult
}module.exports WXDataCrypt 3.解密信息的js页面 const app getApp()
let WXDataCrypt require(../../utils/WXDataCrypt.js);
let AppId 你的appid
let AppSecret 你的appsecrect
let session_key 微信session_key
let stepInfoList []
//获取步数
const getRunData () {var pc new WXDataCrypt(AppId, session_key)wx.getWeRunData({success: function (res) {var data pc.decryptData(res.encryptedData , res.iv)console.log(解密后 data: , data)stepInfoList data.stepInfoList}
}) 注意
用户的微信步数数据可能因为用户关闭微信运动或隐私设置而无法获取。
用户的微信步数数据不会实时更新。
这里有一篇持续更新的文章