最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • uni-app捐步功能

    正文概述 掘金(菜远远升值记)   2021-01-20   706

    个人捐步

    获取个人微信步数:

    1.首先需要wx.login获取到登录凭证---code

     wx.login({
      success (res) {
    	console.log(res.code);
      }})
    

    2.在成功获取code之后,在回调函数success,向微信接口服务器发送请求,获取用户的session_key

    微信请求接口为:

    GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
    

    参数解释:

    • appid:为小程序的appId
    • secret:为小程序的appSecret
    • js_code:为登录时获取的code,也就是上面第一步获取到的code
    • grant_type:为授权类型,此处只需填写authorization_code

    注: 对于appId和appSecret的获取 登录微信公众号平台找寻对应该开发小程序的id和密码 uni-app捐步功能

    主要代码为:

    wx.login({
    	success: (res) => {
    	var appid = "wx.....1";
    	var secret = "fjjo8b...1d95";
    	if (res.code) {							
              wx.request({
                url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + res.code + '&grant_type=authorization_code',
                header: {'content-type': 'json'},
                success: (res) => {
                    var session_key = res.data.session_key;
                }
          	})
       	}
       }
      })
    

    3.获取到session_key的同时,调用wx.getWeRunData接口,得到 数据如下:其中encryptedData即包含了用户过去三十天的微信运动步数,但是它是被加密了的,所以需要进行解密

    uni-app捐步功能

    主要代码操作:

    wx.getWeRunData({
      success (res) {
        // 拿 encryptedData 到开发者后台解密开放数据
    var encryptedData = res.encryptedData;
    //iv可以用来解密
    var iv = res.iv;
      }})
    

    4.对获取到的encryptedData进行解密-(解密需要用到appid,session_key还有iv,这也便说明了为啥要进行登录的原因)

    主要采取方法:1.为向后端发起请求让后端进行解密 2.前端利用js进行解密

    这里采用第二种方法

    首先:

    下载对应解密js包 --下载地址如下: codeload.github.com/gwjjeff/cry…

    然后:

    在小程序项目中创建utils文件夹 将上面下载包含js的文件放入utils文件夹下

    再然后:

    封装解密方法 如下: uni-app捐步功能

    随之:

    调用方法(注意需要先引入方法)

    var WXBizDataCrypt = require("util/RdWXBizDataCrypt.js");
    wx.getWeRunData({
    	success: (res) => {
    		var encryptedData = res.encryptedData;
    		var iv = res.iv;
    		var pc = new WXBizDataCrypt(appid, session_key);
    		var data = pc.decryptData(encryptedData, iv);
    		//得到今天所走的步数	
    		this.steps = data.stepInfoList.pop().step;
    	}	
    })
    

    5.额外补充一下权限问题

    对于微信小程序的步数获取,是需要权限的,所以当要获取用户步数之前,先要判断用户是否开启了权限,则主要步骤如下 a.使用uni.getSetting()方法 方法介绍(cope文档)

    uni-app捐步功能

    主要是在success回调函数里获取到res.authSetting对象,然后判断该对象的scope.werun是否存在,存在表示权限开了,没有表示没有开启 uni-app捐步功能

    b.若没有开启,则使用uni.authorize()方法来开启权限,uni.authorize方法介绍: uni-app捐步功能

    填写要开启的权限对应的scope值,开启成功调用success方法,失败调用fail方法,若还需要开启,则在fail方法里调用uni.openSetting方法,跳转到系统的权限页面进行配置

    c.整体代码如下:

    uni.getSetting({
      success:(res)=>{
      console.log(res);
      if (res.authSetting['scope.werun']) {
       console.log('已授权获取微信步数')
       uni.getWeRunData({
        success: (res) => {
            var encryptedData = res.encryptedData;
            var iv = res.iv;
            var pc = new WXBizDataCrypt(appid, session_key);
            var data = pc.decryptData(encryptedData, iv);
            //处理data 得到当天的步数
            console.log("步数", data);
            this.steps = data.stepInfoList.pop().step;
            uni.showModal({
                title: '提示',
                content: `您当前的步数为:${this.steps},请问确认完全捐出所走步数吗`,
                success: (res) => {
                    res.confirm ? console.log('用户点击了确认捐步按钮') : console.log('用户点击了取消捐步按钮')
                    if(res.confirm) {
                        this.donateSteps();
                    }
                }
            })
        }
       })
      }else{
      uni.authorize({
        scope: 'scope.werun',
        success:()=>{
          console.log("授权成功")
        },
        fail:()=>{
          uni.showModal({
            title: '提示',
            content: '获取微信运动步数,需要开启计步权限',
            success: function (res) {
              if (res.confirm) {
                //跳转去设置
                uni.openSetting({
                  success: function (res) {
    
                  }
                })
              } else {
                //不设置
              }
        }
        })
        }
      })
      }
    
      }
      })
    			},
    

    简单来说:

    主要方法调用为->uni.getSetting(得到scope[werun])->uni.authorize(弹窗授权)->uni.openSetting(跳转权限页面授权)

    总结: 主要步骤就是

    • 1.login获取code
    • 2.利用code,appid,secret向微信服务器发请求获取session_key
    • 3.利用getWeRunData获取加密的步数数据encryptedData和iv
    • 4.然后提供iv,session_key,appid给解密方法进行解密,获得解密后的步数

    组队捐步

    组队捐步

    1.首先发起组队捐步时,便获取发起者的个人信息

    主要方式是: 给触发按钮添加open-type=”getUserInfo”属性同时绑定getuserinfo事件

    <button class="btn" open-type="getUserInfo" @getuserinfo="getUserInfo"></button>
    

    事件处理器中获取对应的发起者信息:

    getUserInfo(res) {
    	console.log(res.detail.userInfo);
    }
    

    2.再获取个人信息的同时,向后端发起请求,保存该队伍的相关信息

    3.跳转到组队界面

    4.首先讲述一下分享按钮 邀请好友 方法:

    onShareAppMessage(res) {
    	if (res.from === "button") {
    		console.log("点击了分享");
    	}
    	return {
    		title: "自定义分享标题",
    		content: "我是分享的内容",
    		desc: "我是分享描述",
    path:"/pages/teammate/teammate?scene=2&initiator="+this.teamId
    	}
    }
    

    注意:

    • 这里设置了path对应的页面就是当前界面,所携带的参数scene和initiator主要是用来判断进入该界面的是不是被邀请者
    • onShareAppMessage分享return的对象里面已经没有success和fail的回调函数了,写了也不会执行,可以去看一下微信社区就知道了。

    5.讲述onLoad方法 在该界面onLoad方法里,先判断是不是被邀请者 这里主要采取onLoad的参数的scene是否等于2来判断

    	onLoad(options) {
    		if (options.scene === 2) { //如果为2表示是被邀请者
    		}
    	}
    

    倘若是被邀请者,则同样需要获取登录权限--得到openid还要得到个人信息 则需则次进行login和getuserinfo的操作

    同时,得到对应被邀请者数据之后,利用openid和参数传递过来的teamId向后端发送请求,判断该被邀请者是否是已经是该队伍中的成员,若是,则直接进行查询该队的所有成员,显示在界面上,若不是,则添加到数据库中,再查询添加后的队伍的所有成员,显示在界面上

    完结撒花~~~

    参考链接:

    blog.csdn.net/llayjun/art… www.jb51.net/article/119… www.cnblogs.com/cai-rd/p/68…


    起源地下载网 » uni-app捐步功能

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元