讲师中心 微信公众号
AI工具推荐 视频效率加速

uni-app实现微信小程序运动步数读取 uni-app获取微信健康数据

云萱酱_9706

云萱酱_9706

发布时间:2026-05-04 10:17:07

|

856人浏览过

|

来源于php中文网

原创

微信小程序运动步数接口必须通过用户真实点击触发,且需后端用session_key解密encryptedData获取步数,其他平台需条件编译隐藏。

uni-app实现微信小程序运动步数读取 uni-app获取微信健康数据

微信小程序运动步数接口在 uni-app 中不可用

uni-app 编译到微信小程序时,wx.getWeRunData 这个原生接口确实存在,但直接调用会失败——不是语法问题,而是微信平台对调用条件卡得极严:必须用户主动触发(如 button 点击),且不能在异步回调、定时器、生命周期钩子中隐式调用。uni-app 的 onLoad 或 mounted 里直接写 uni.getWeRunData(或通过 uni.$nextTick 延迟)基本都会报错 errCode: -1, errMsg: "getWeRunData:fail invalid operate"。

  • 微信要求调用必须绑定在 <button open-type="getWeRunData"></button> 上,且该 button 必须是用户真实点击(不能用 click() 模拟)
  • uni-app 的 <button></button> 组件支持 open-type="getWeRunData",但仅限微信小程序平台(H5/App 不生效)
  • 返回的加密数据必须用开发者服务器解密(微信不提供前端解密能力),密钥 session_key 需从自己后端获取,不能硬编码或从前端传

正确调用流程:button + 后端解密闭环

不能跳过微信的 button 限制,也不能把解密逻辑放前端。标准链路是:用户点 button → 微信返回加密数据 → 传给自己的后端 → 后端用 session_key 解密 → 返回明文步数给前端。

微信创作
微信创作

自动将 Markdown 文章转为适配微信公众号格式的 HTML,并批量发布至公众号草稿箱,支持封面图生成与专题管理。

下载
  • 模板中写:<button open-type="getWeRunData">获取步数</button>
  • 方法中只做透传:onGetWeRunData(e) { if (e.detail.errMsg === 'getWeRunData:ok') { uni.request({ url: 'https://your-api.com/decrypt-werun', method: 'POST', data: { encryptedData: e.detail.encryptedData, iv: e.detail.iv } }); } }
  • 后端需用对应用户的 session_key(来自登录态 code2Session 接口)调用微信官方解密方法(如 Node.js 的 crypto.createDecipheriv)
  • 注意:encryptedData 是 base64 字符串,解密后是 JSON,字段 stepInfoList 是数组,最新一条的 step 即当日步数

常见报错与绕不过去的坑

很多开发者卡在“点了没反应”或“报 -1 错误”,本质是违反了微信的调用上下文约束,或者解密环节出错。

  • getWeRunData:fail scope unauthorized:小程序未在后台配置「微信运动」接口权限(登录 微信公众平台 → 开发管理 → 接口权限 → 添加「微信运动」)
  • getWeRunData:fail invalid operate:button 不是用户真实点击(比如自动 click、在 onShow 里触发、用 view 模拟 button)
  • 解密后得到空对象或乱码:后端用了错误的 session_key(不同用户的 key 不能混用)、IV 长度不对(必须是 16 字节)、加密算法未用 AES-128-CBC
  • 步数始终为 0:微信运动数据有延迟(通常 T+1),且用户手机需开启「微信运动」并同步过健康数据(iOS 在「健康」App、Android 在「微信运动」设置里)

uni-app 条件编译与兼容处理

这个功能只存在于微信小程序,其他平台必须降级或隐藏。别用 process.env.UNI_PLATFORM === 'mp-weixin' 判断,uni-app 提供更稳妥的条件编译语法。

  • 在 template 中用:<button v-if="uni.getSystemInfoSync().platform === 'ios' || uni.getSystemInfoSync().platform === 'android'">…</button> ❌ 错误,平台判断不准
  • 正确写法(编译期剔除):#ifdef MP-WEIXIN … #endif,这样 H5 和 App 构建时根本不会打包 button 节点
  • JS 中判断运行环境:if (uni.getProvider && uni.getProvider({service: 'oauth'})?.includes('weixin')) { ... } 不可靠;应统一用 uni.getSystemInfoSync().platform === 'devtools'(调试器)或直接依赖编译宏
  • 务必加 loading 和错误提示:button 点击后禁用、显示“正在获取…”;解密失败时明确提示“请确认已开启微信运动并同步数据”
微信健康数据(如心率、睡眠)目前没有开放给第三方小程序读取,getWeRunData 是唯一公开的运动类接口,且仅限步数。别尝试找替代方案——没有合法的、无需用户授权的绕过方式。

相关文章

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2683

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

5823

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6790

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

6518

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

923

2024.05.22

微信是谁开发的
微信是谁开发的

微信是由张小龙所带领的腾讯广州研发中心产品团队打造开发的,并不是马化腾开发的,而腾讯公司总裁马化腾是在产品策划的邮件中确定这款产品的名称叫做“微信”的。想了解更多微信相关的内容,可阅读本专题下面的相关文章。

5655

2024.11.05

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

100

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

60

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

60

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn