1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 小程序 php 获取openid和 微信运动步数 解密运动数据

小程序 php 获取openid和 微信运动步数 解密运动数据

时间:2019-10-14 05:34:10

相关推荐

小程序 php 获取openid和 微信运动步数 解密运动数据

第一步,获取session_key,用来解密必须用到的

第二步,获取encryptedData和iv,就是一些,微信步数加密后的数据

第三步,根据appid,session_key,iv来解密encryptedData,则会获取到解密之后的数据

实战:

首先去这里下载官方提供的demohttps://res./wxdoc/dist/assets/media/aes-sample.eae1f364.zip

解压后把 errorCode.php 和 wxBizDataCrypt.php 放到 服务器目录里。(网上大部分教程没有说这个,这两个文件要跟你解密php文件放一个目录)

开始写test.php后台解密文件

test.php内容:

<?php include_once "wxBizDataCrypt.php";$appid = '你的appid';$appsecret = '你的appsecret';$encryptedData = $_GET['encryptedData'];$iv = $_GET['iv'];$url = 'https://api./sns/jscode2session?appid='.$appid.'&secret='.$appsecret.'&js_code='.$_GET['code'].'&grant_type=authorization_code';$content = file_get_contents($url);$content = json_decode($content);$sessionKey = $content->session_key;$openId = $content->openid;$pc = new WXBizDataCrypt($appid, $sessionKey);$errCode = $pc->decryptData($encryptedData, $iv, $sp ); $sp = json_decode($sp); //sp就是step,步数的意思$raw_data = array('openid' => $openId, 'sp' => $sp);$res_data = json_encode($raw_data);header('Content-Type:application/json');if ($errCode == 0) {echo ($res_data);} else {print($errCode . "\n"); //同时返回 openid 和 步数回去} ?>

小程序 index.js内容:

Page({data: {userInfo: {},hasUserInfo: false,canIUse: wx.canIUse('button.open-type.getUserInfo'),openId:0,stepList:{},syncText:'',startDate:'',finalDate:'',totalsteps:'',totalSteps_hidden:0,syncText_hidden:0,syncData_hidden:0,notice_hidden:0,noticeText:"",},get3rdSession: function () {let that = thiswx.request({url: '/test.php',data: {encryptedData: that.data.encryptedData,iv: that.data.iv,code: that.data.code,},method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECTsuccess: function (res) {// 更新openId的值that.setData({openId: res.data.openid}); //输出今天步数let stepList = res.data.sp.stepInfoList//console.log(stepList)that.setData({stepList: stepList,}); console.log(stepList)}, }) },onLoad: function () {let that = thiswx.login({success: function (res) {let code = res.codethat.setData({ code: code })wx.getWeRunData({//解密微信运动success(res) {const wRunEncryptedData = res.encryptedDatathat.setData({encryptedData: wRunEncryptedData})that.setData({ iv: res.iv })that.get3rdSession()//解密请求函数 },fail: function (res) {if (res.errMsg == 'getWeRunData:fail auth deny'){wx.showModal({title: '提示',content: '获取微信运动步数,需要开启计步权限',success: function (res) {if (res.confirm) {//跳转去设置wx.openSetting({success: function (res) {}})} else {//不设置}}})}else {console.log(res.errMsg)wx.showModal({title: '提示',content: '未开通微信运动,请关注“微信运动”公众号后重试',showCancel: false,confirmText: '知道了'})}}})}})},

这里没有对stepList的时间戳转日期。 我是在后台php转换的。

PHP 小程序 时间戳 转日期PHP 小程序 时间戳 转日期 - 兔子昂

或者使用小程序支持的js

JavaScript 小程序 时间戳 转日期JavaScript 小程序 时间戳 转 日期 - 兔子昂

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。