当前位置:   article > 正文

uniapp+egg.js获取微信步数(wx.getWeRunData)_微信步数接口

微信步数接口

uniapp

  1. 调用uni.login()获取code

  2. 调用wx.getWeRunData()获取encryptedData、iv

  3. 请求后端接口,传递code、encryptedData、iv参数

    1. created() {
    2. let copyThis = this;
    3. // 调用微信登录方法获取code
    4. uni.login({
    5. provider: 'weixin',
    6. success(res) {
    7. //调用微信步数接口获取(encryptedData、iv)
    8. wx.getWeRunData({
    9. success(res2){
    10. //调用后端接口,传递参数
    11. uni.request({
    12. url: 'http://127.0.0.1:7001',
    13. data: {
    14. code: res.code,
    15. encryptedData:res2.encryptedData,
    16. iv:res2.iv
    17. },
    18. success(res3) {
    19. let {date,step} = res3.data.data;
    20. copyThis.opts2.title.name = step[step.length-1].toString();
    21. copyThis.chartData.categories = date;
    22. copyThis.chartData.series[0].data = step;
    23. copyThis.chartsShow = true;
    24. }
    25. })
    26. }
    27. })
    28. }
    29. });
    30. }

    egg.js

  4. 获取前端传递过来的参数

  5. 小程序开发平台拿到appId、AppSecret

  6. 请求微信接口传递appid、secret(AppSecret)、js_code(code)参数

    https://api.weixin.qq.com/sns/jscode2sessionappid=${appId}&secret=${AppSecret}&js_code=${code}&grant_type=authorization_code
  7. 引入WXBizDataCrypt解密文件,new WXBizDataCrypt传递参数appId、session_key。下载文件

  8. decryptData(encryptedData, iv)获取解密JSON数据。

    1. 'use strict';
    2. const { Controller } = require('egg');
    3. const WXBizDataCrypt = require('./WXBizDataCrypt');
    4. const datetime = require('silly-datetime'); //npm i silly-datetime --save 时间格式化库
    5. class HomeController extends Controller {
    6. async index() {
    7. const { ctx } = this;
    8. // 获取前端传递参数
    9. const { code, encryptedData, iv } = ctx.query;
    10. // 小程序平台复制appId、AppSecret
    11. const appId = 'wx2b5d4b45d5464fd3';
    12. const AppSecret = 'e7c02d8b31c38501dfaa4b86afec768b';
    13. const URL = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${AppSecret}&js_code=${code}&grant_type=authorization_code`;
    14. // 请求微信接口,获取session_key
    15. const { data: { session_key } } = await ctx.curl(URL, {
    16. method: 'get',
    17. dataType: 'json',
    18. });
    19. // 引入WXBizDataCrypt文件,new出实例传递参数
    20. const pc = new WXBizDataCrypt(appId, session_key);
    21. const { stepInfoList } = pc.decryptData(encryptedData, iv);
    22. const date = [];
    23. const step = [];
    24. stepInfoList.forEach(item => {
    25. // 修改日期格式
    26. date.push(datetime.format(new Date(item.timestamp * 1000), 'YYYY-MM-DD'));
    27. step.push(item.step);
    28. });
    29. ctx.body = {
    30. code: 200,
    31. msg: '成功',
    32. data: {
    33. date,
    34. step,
    35. },
    36. };
    37. }
    38. }
    39. module.exports = HomeController;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/308176
推荐阅读
相关标签
  

闽ICP备14008679号