微信小程序获取微信步数

2023-11-15

获取步数授权

获取用户微信运动步数的前提是用户授权小程序访问他的微信运动数据。

微信对用户隐私有严格的控制,任何涉及用户隐私的敏感数据都需要用户同意后小程序才能获取。只有当用户点击“允许”后,小程序才能获取用户的微信运动数据。
在这里插入图片描述

小程序的用户授权在微信官方的“小程序开发文档”中有详细的介绍,

入口网址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
在这里插入图片描述
通过阅读“授权”小节内容,及该小节包含的各类 API 说明,如 wx.getSetting 等,我们可以整理出用户授权的逻辑如下:

调用 wx.getSetting 获取用户当前的授权状态;
如果用户还未授权过小程序读取微信运动数据,需要调用 wx.authorize 让用户授权读取微信运动数据;
如果用户拒绝小程序读取微信运动数据,需要提示用户在小程序设置界面(「右上角」 - 「关于」 - 「右上角」 - 「设置」)中允许我们访问微信运动数据;
如果用户已经授权小程序读取微信运动数据,则调用获取微信运动步数的 API ,获取用户的微信运动步数。
按上述思路实现用户授权的代码如下:

/**
   * 用户授权读取微信运动数据
   */

  authorizeWeRun(){
    var that = this
//首先获取用户的授权状态
    wx.getSetting({
      success(res){
        // console.log(res)
        if(!res.authSetting['scope.werun']){
// 如果用户还未授权过,需要用户授权读取微信运动数据
          wx.authorize({
            scope: 'scope.werun',
            success() {
              //读取微信步数数据
              that.getWeRunData()
            },
            fail() {
              //如果用户拒绝授权,提示用户需要同意授权才能获取他的微信运动数据
              wx.showModal({
                title: '读取微信运动数据失败',
                content: '请在小程序设置界面(「右上角」 - 「关于」 - 「右上角」 - 「设置」)中允许我们访问微信运动数据',
              })
            }
          })

        }else{
           //如果用户已授权过,直接开始同步微信运动数据
          //读取微信步数数据
          that.getWeRunData()
        }
      }
    })
  },


调用微信运动步数 API

在用户授权同意小程序获取微信运动数据,我们就可以调用微信运动步数 API,来获取用户最近30天的微信运动步数。

微信运动步数 API wx.getWeRunData 的详细介绍请点击 图 14 中蓝框标出部分查看。

微信运动步数 API 的调用代码如下:

 /**
   * 获取微信运动数据
   */

  getWeRunData(){
    var that = this
    wx.getWeRunData({
      success(res){
        console.log(res)
      wx.cloud.callFunction({
        name:'desrundata',
        data:{
         weRunData: wx.cloud.CloudID(res.cloudID)  //直到云函数被替换
        }
      }).then(res=>{
      console.log(res)
        that.setData({
          stepInfoList: res.result
        })
      })
      }
    })
  },

调用微信运动步数 API 后,我们在微信开发者工具的调试器中可以看到 API 返回结果 weRunEncryptedData 的内容,
在这里插入图片描述
为了确保用户隐私数据的安全性,微信小程序的各类开放数据 API 返回到小程序手机端的数据都进行了加密,需要小程序手机端将这些数据发送到小程序服务端,在服务端解密。

这样的处理机制可以防止有人用技术手段在小程序手机端篡改数据,请阅读微信官方文档关于“开放数据校验与解密”小节的内容来更进一步的理解为什么可以防止数据篡改。

云调用直接获取开放数据

在微信官方文档“开放数据校验与解密”小节中,介绍了两种解密微信运动数据的方式开发者后台校验与解密开放数据” 的实现方式在本专栏源代码中也有完整实现,具体位置见小节开头的介绍。
在云开发中实现云调用直接获取开放数据,首先需要建立一个云函数。云函数 index.js 的具体代码如下:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  // 根据用户提交的cloudid 获取对应的运动数据
  let weRunData = event.weRunData
  //同步运动数据
  let res = await GrowthValue(weRunData.data.stepInfoList)
  return weRunData.data.stepInfoList
}

最后,在 WXML 页面逻辑中显示解密后的微信运动步数:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序获取微信步数 的相关文章

  • 密码学研究重点

    密码学涵盖了认证 数字签名以及更多基本的安全功能 密码学涉及领域及其宽广 包括计算机安全 高等数学 经济学 量子物理学 民法和刑法 统计学 芯片设计 软件优化 政治 用户界面设计等 0x01 密码学重要性 密码学本身没有价值 必须作为一个系
  • tessract-ocr文本识别系统网页搭建【PHP】

    tessract ocr文本识别系统网页搭建 下面是我搭的网站 OCR文本识别系统 在安装后tesstact ocr后 我找到了一个利用php调用ocr接口的方法 在github上有这样一个项目 https github com thiag
  • 为何boss上的HR要了简历就不回复了?

    不止一个小伙伴在微信上问过我这个问题 今天就来跟大家分享一下出现这种现象的原因 并给我认为在boss上的正确打招呼方式 废话不多说 开始今天的主题分享 出现这一现象一般有以下几种原因 1 简历与岗位需求不匹配 这很好理解 其实就是别人没看上
  • K8s中的Deployment

    Deployment是kubernetes在1 2版本中引入的新概念 用于更好的解决Pod的编排问题 为此 Deployment在内部使用了ReplicaSet来实现目的 我们可以把Deployment理解为ReplicaSet的一次升 级

随机推荐

  • 【精华】批量修改文件夹中的文件名

    转载自 批量修改文件名 原文地址如下 http t csdn cn tGsfz 1 在所需批量修改文件名的文件夹内新建一个改 txt文件 并在新建的txt文件中输入dir gt 1 txt 2 修改新建的改 txt文件的后缀名为 bat 3
  • 虚拟机Ubuntu20.04一招解决无法连接网络问题

    虚拟机Ubuntu20 04一招解决无法连接网络问题 网上试了很多方法都没解决 最后一招解决 简单的网上一堆教程自己找下 此教程适合解决不了的同学 第一步 先关闭虚拟机的ubuntu系统 然后虚拟机 gt 设置 gt 网络适配器 选择NAT
  • 泛型是实体类的集合,根据某一字段排序

    举例 List
  • IDEA将web项目打包成war包

    目录 通用的方式打包 maven方式打包 eclipse版本 https blog csdn net weixin 45859844 article details 119965820 如果要到服务器部署项目 可能需要将项目打成war包 放
  • 程序员必备的思维能力:结构化思维

    在日常工作中 我们时常会碰到这样的情况 有的人讲一件事情的时候逻辑非常混乱 说了很多事情的罗列 却说不到重点 有的人写代码 本身的业务逻辑并没有多复杂 但呈现出的代码却像一堆线团 混乱不堪 无法理解 这些都是典型的缺少结构化思维的表现 导致
  • 挖矿病毒解决

    1 进程 cpu 100 watchdog 2 解决 tmp netstat 矿池 鱼池 sup 进程 文件主程序 crontab l 计划任务 分析脚本 3 如何进来的 web日志 log4j 命令 漏洞 docker yam fastj
  • Mathematica 有关向量与矩阵的函数

    下面是Mathematica中常用的关于向量和矩阵的函数
  • MySQL添加用户、删除用户、授权及撤销权限

    一 创建用户 mysql gt insert into mysql user Host User Password values localhost test password 1234 这样就创建了一个名为 test 密码为 1234 的
  • JAVA并发-Monitor简介

    什么是Monitor 1 Monitor是一种用来实现同步的工具 2 与每个java对象相关联 即每个java对象都有一个Monitor与之对应 3 Monitor是实现Sychronized 内置锁 的基础 Monitor的基本结构是什么
  • 十问十答

    凯云科技 今年六月 我们迎来了异常炎热的夏季 炎炎烈日也抵挡不了我们前进的步伐 上海 北京都留下了凯云的身影 两场展会 一场论坛 我们也得到了来自客户的高度认可 对此 小编特意整理了关于核心软件ETest的十问十答 为还心存疑惑的小伙伴们答
  • idea配置两个git源地址步骤并合并代码

    最近做项目迁移 把原来的gitlab上的代码迁移到了另一个gitlab仓库汇总 更换了git源地址 这样需要把原来项目的代码合并到新的gitlab仓库中 添加git源地址
  • Oracle数据库表的约束

    Oracle数据库约束类型主要有以下几个 primary key 主键约束 foreign key 外键约束 check 检查约束 unique 唯一约束 not null 非空约束 alter table table name add c
  • TypeScript实现八大排序与搜索算法

    前言 我们在页面上渲染数据时 通常会根据特定规则来对数据进行一个排序 然后再将其渲染到页面展示给用户 那么对数据进行排序有很多种方式 哪一种效率高 哪一种稳定性好 那一种占用内存小 本文将详解经典的八大排序算法以及三种搜索算法 并用Type
  • 【排错日记】PageHelper插件的默认分页参数

    现象 没有写如下代码 执行的结果却被分页显示了 PageHelper startPage listParam getPageNum listParam getPageSize 源码分析 调用方法判断是否需要进行分页 如果不需要 直接返回结果
  • k8s 启动探针生存探针&就绪探针

    目录 k8s 启动探针 存活探针 就绪探针 存活 就绪探针的区别 探针处理程序和结果 启动探针 存活探针 livenessProbe exec livenessProbe httpget livenessProbe tcp 就绪探针 k8s
  • 【总结】NPU/CPU/GPU 傻傻分不清?

    本文主要解答以下问题 NPU是新玩意儿吗 芯片里面的CPU GPU NPU究竟是什么 它们是怎么工作的 引言 中国首款嵌入式NPU诞生 6月20日 中星微 数字多媒体芯片技术 国家重点实验室在京宣布 中国首款嵌入式NPU 神经网络处理器 芯
  • AWTRIX像素屏时钟搭建

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 AWTRIX像素屏时钟搭建 前言 一 AWTRIX是什么 二 AWTRIX像素屏时钟搭建步骤 1 材料准备 2 ESP8266固件刷写 3 接线方式 4 手机端配网 4 服务
  • 2022中山大学计算机技术专硕考研初试、复试经验帖

    2022年中山大学计算机技术专硕考研初试 复试经验帖 个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧 可以帮助节省时间 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 如果觉得有帮助的话可以点个收藏后续会修改和增加内容
  • shell判断程序是否运行,守护进程

    一 需求 服务部署在linux上 要求服务器上的服务可以一直保持正常运行 二 问题 在linux上部署的微服务 不知道什么原因过一段时间就自己停掉了 无法启动 三 解决办法 添加angle守护进程 通过定时执行脚本来判断程序是否运行 若不是
  • 微信小程序获取微信步数

    获取步数授权 获取用户微信运动步数的前提是用户授权小程序访问他的微信运动数据 微信对用户隐私有严格的控制 任何涉及用户隐私的敏感数据都需要用户同意后小程序才能获取 只有当用户点击 允许 后 小程序才能获取用户的微信运动数据 小程序的用户授权