微信小程序——获取用户的运动步数

程序获取用户信息步骤

  • 点击参考微信文档中的授权
  • 首先程序先向用户申请访问哪些权限
  • 用户做出选择后返回给程序
  • 程序携带权限访问服务器
  • 如果用户允许则返回信息
  • 如果用户为允许则不返回
    在这里插入图片描述

自定义函数getUserRun

在这里插入图片描述
为获取用户的微信运动数据 页面加载调用此函数函数中执行下面操作

1. 获取用户的权限设置

在这里插入图片描述

  • wx.getSetting(object,object)获取当前用户的设置,返回值就是小程序向客户请求过的权限(包括允许和未允许的)
  • 函数中的success是成功后执行 输出内容中的authSetting为空对象 说明当前用户没有对改程序开放任何权限
2.判断用户是否对微信运动步数进行授权

在这里插入图片描述

  • 当用户对微信运动步数授权后 setting中的成功返回值authSetting中的对象应该包括scope.werun
  • 可以根据返回值authSetting对象中是否包含scope.werun而进行判断

在这里插入图片描述

2.1 如果用户还没有授权
  • 通过调用wx.authorize(object,object)立刻弹窗询问是否授权小程序使用某项功能或获取用户的某些数据,如果用户已经授权则不会弹起
    在这里插入图片描述
    在这里插入图片描述
  • scope的参数值就是要申请的权限
  • 用户允许后执行sucess函数
    在这里插入图片描述
    • 调用自定义方法获取用户微信运动数据
  • 用户不允许则执行fail函数在这里插入图片描述
    • 在函数中 通过wx.showModal弹出提示框 title为标题 content为内容 用户确认后提示框消失
2.2 如果用户已经授权
  • 调用自定义方法(此方法就是获取用户微信运动的数据)
    在这里插入图片描述
3. 自定义函数读取用户微信运动数据
  //定义函数读取用户微信运动数据getWeRunData() {wx.getWeRunData({success(res) {console.log(res)}})},

在这里插入图片描述

  • 通过调用wx.getWeRunData(Object object)接口获取用户过去三十天微信运动步数。需要先调用 wx.login 接口。步数信息会在用户主动进入小程序时更新。

  • 但是返回的数据出于安全是加密的 通过如下方式进行解密
    在这里插入图片描述

  • 重新编译自定义函数代码

     //定义函数读取用户微信运动数据getWeRunData() {wx.getWeRunData({success(res) {//由于数据是进行加密的所以我们通过条用云函数的方式进行解密wx.cloud.callFunction({name: 'deswerundata',data: {weRunData: wx.cloud.CloudID(res.cloudID) // 这个 CloudID 值到云函数端会被替换}}).then(res=>{console.log(res)})}})},
    
    • 其中name的值就是我们要调用的云函数名称
    • data就是我们要传递的数据
    • .then就是请求完云函数后我们要得到返回的数据
  • 创建云函数deswerundata
    在这里插入图片描述
    在这里插入图片描述

  • 编辑此云函数中的index.js中的代码为

    // 云函数入口文件
    const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数
    exports.main = async (event, context) => {let weRunData = event.weRunDatareturn {weRunData}
    }
    
  • 将云函数重新上传 重新编译即可
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++之前置自增与后置自增

关于前置自增与后置自增的区别我是参考这里:http://bbs.bccn.net/thread-454977-1-1.html 简单复述下,比如x; 与 x; 在C中,x这个表达式的值为原先x的值1,副作用是x的值增加了1;(C中不是这样定义的&#xff…

第一次个人作业

该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2作业要求地址:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3340团队名称:脑壳痛 作业的目标 1.通过测试其他组的软件项目学习其…

微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。 (7f2d9d2d-5eac-4575-9n57-acd66cfa587g

1. 上传部署我们的云函数 2. 报错 错误信息为:Error: ResourceNotFound.Function, 未找到函数版本,请创建后再试。 (7f2d9d2d-5eac-4575-9b57-acd66cfa587e) 3. 原因 原因是可能我们在调试的时候不小心将我们开发控制台中的云函数删除了 4. 解决办法…

前端面试题——HTML基础篇

如何进行网站的性能优化 content方面 减少http请求 合并文件 css精灵图减少 DNS 查询 DNS缓存 将资源分布到恰当数量的主机名减少 DOM 元素的数量 Server方面 使用CDN配置Etag对组件使用 Gzip 压缩 Cookie方面 减小cookie大小 css方面 将样式表放到页面顶部不使用css表…

【IT界的厨子】酱香鲈鱼

食材: 前世曾经回眸的鲈鱼一条(主要选刺少的鱼,适合孩子吃,大人吃随意,草鱼比较大) 五花肉少许(肥一些的) 豆腐 辅料: 葱姜 蒜(选) 大料 香菜 调味: 啤酒(两罐) 黄豆酱或豆瓣酱(选) 老抽 生抽 料酒 盐 步骤: 1、鱼肉划开,方便炖的…

第二章:09流程控制[3for]

①格式for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } ②注意事项A:判断条件语句无论简单还是复杂结果是boolean类型。 B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。 C:一般来说:有左大括…

LeetCode,第377场周赛,个人题解

目录 100148.最小数字游戏 题目描述 思路分析 代码详解 100169.移除栅栏得到的正方形田地的最大面积 题目描述 思路分析 代码详解 100156.转换字符串的最小成本I 题目描述 思路分析 代码详解 100158.转换字符串的最小成本II 题目描述 思路分析 代码详解 100148.…

for each....in、for in、for of

一、一般的遍历数组的方法: var array [1,2,3,4,5,6,7]; for (var i 0; i < array.length; i) { console.log(i,array[i]); } 二、用for in的方遍历数组 for(let index in array) { console.log(index,array[index]); }; 三、forEach array.forEach(v>{ cons…

Vue cli3.0创建Vue项目

创建Vue项目 在要创建项目的文件夹下面打开Powershell窗口 输入命令 vue create 项目名称 选择第二项 回车后 选择是否使用历史路由 no 回车 选择 Less 回车 选择第三个 回车 选择第一个 回车 选择第一个 回车 是否保存模板 选择no 完成啦 完成

文件内容的输出io

package bbb; import java.io.*; public class ccc {public static void main(String[]args) throws IOException{ File filenew File("d:/1data.txt"); FileOutputStream outnew FileOutputStream(file); byte buy[]"12345abcdef#%&*软件工程".getByt…

看完后完全了解 Vue 2.0 和 Vue 3.0 的区别

1.数据的双向绑定 Vue2.0使用Object.defineProperty 原理&#xff1a;通过使用 Object.defineProperty 来劫持对象属性的 geter 和 seter 操作&#xff0c;当数据发生改变发出通知 代码&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4…

channels2.X 学习笔记

- No module named asgiref.sync 报错解决&#xff1a; # 报错原因&#xff1a; """ django版本过低&#xff0c; 卸载最新版本的 channels 使用2.x 版本的 """ pip3 uninstall channels - 安装&#xff1a; """ Django 1.11.15 …

风格迁移学习笔记

风格迁移大作业 学习规划 跑通一份代码&#xff01;&#xff01;&#xff01;&#xff08;done&#xff09;对照代码、Blog和论文理解相应的算法过程规划下一步&#xff0c;修改代码&#xff08;done&#xff09;&#xff0c;实现预计功能&#xff08;done&#xff09;调参&…

Netty源码分析第5章(ByteBuf)----第5节: directArena分配缓冲区概述

Netty源码分析第5章(ByteBuf)---->第5节: directArena分配缓冲区概述 Netty源码分析第五章: ByteBuf 第五节: directArena分配缓冲区概述 上一小节简单分析了PooledByteBufAllocator中, 线程局部缓存和arean的相关逻辑, 这一小节简单分析下directArena分配缓冲区的相关过程 …

uni-app(从零开始)

uni-app&#xff08;从零开始&#xff09; uni-app 是什么&#xff1f; uniapp 就是使用Vue.js技术开发所有前端框架的跨端框架uniapp 就是可以将一套代码 发布到多个平台 uniapp 和 Vue 的关系&#xff1f; uniapp是基于vue进行开发&#xff0c;继承了Vue的特性和语法在开…

Remote desktop manager共享账号

因为多个远程机器&#xff0c;是会用了域账号进行登录的。而域账号的密码&#xff0c;三个月之后&#xff0c;密码强制过期 添加一个新的entry&#xff0c;类型是Credential Entry&#xff0c;然后选择用户名/密码 在remote desktop编辑的页面&#xff0c;Credentials选择Crede…

bzoj4403:序列统计

我好傻啊 题目 先来看看长度只能为\(n\)的情况 那么答案非常显然是\(\binom{mn-1}{n}\) 其中\(mR-L1\) 因为我们要构造一个非降序列&#xff0c;显然可能一个数会被选择多次&#xff0c;组合非常不好做&#xff0c;于是我们可以把每一个数的下标加上其对应的下标那么现在的值域…

Mui常用的方法

中对话框 语法&#xff1a;mui.confirm 用法 mui.confirm("确认要切换角色&#xff1f;", "提示", btnArray, function(e) {if(e.index 1) {} else {}});组件名作用alert警告框confirm确认框prompt输入对话框toast消息提示框&#xff08;自动消失&#x…

sudo: pip:找不到命令

https://blog.csdn.net/fcku_88/article/details/84191288转载于:https://www.cnblogs.com/xxswkl/p/11012709.html

java ListMapString,Object遍历的方法

java List<Map<String,Object>遍历的方法 public class Test {public static void main(String[] args) {List<Map<String, Object>> listMaps new ArrayList<Map<String, Object>>();Map<String, Object> map1 new HashMap<Strin…