日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ios11修改微信步数_小程序同步微信步数

發(fā)布時(shí)間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios11修改微信步数_小程序同步微信步数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章正文

小程序獲取微信運(yùn)動(dòng)步數(shù),咱們看文檔:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html

調(diào)用前需要?用戶授權(quán)?scope.werun。

獲取用戶過去三十天微信運(yùn)動(dòng)步數(shù)。需要先調(diào)用?wx.login?接口。步數(shù)信息會(huì)在用戶主動(dòng)進(jìn)入小程序時(shí)更新。

其主要的思路就是:用wx.login獲取的code請(qǐng)求獲取的session_key,加上appid,利用這兩個(gè)參數(shù),到wx.getWeRunData獲取的iv,encryptData,最后將它們一起發(fā)送到后臺(tái)解密就可以獲取到微信運(yùn)動(dòng)步數(shù)了。

下面來看看小程序獲取session_key,用來解密的必須參數(shù)。

onLoad: function (options) {
var that = this;
wx.login({
success: function (res) {
var appid = "wx065bc****454e37b"; //寫自己的appid
var secret = "39f201920ea****c628df7c133e"; //寫自己的secret
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: function (res) {
var session_key = res.data.session_key;
//console.log(res);
that.getData(appid, session_key);
}

})
}
}
})
},

上面獲取的session_keygetData方法來接收

getData方法

//獲取encryptedData(沒有解密的步數(shù))和iv(加密算法的初始向量)
getData: function (appid, session_key) {
wx.getSetting({
success: function (res) {

wx.getWeRunData({
success: function (res) {
//console.log(res);
console.log("appid:" + appid + "session_key:" + session_key + "encryptedData:" + res.encryptedData + "iv:" + res.iv);
var encryptedData = res.encryptedData;
var iv = res.iv;
console.log(encryptedData);
wx.request({
url: getApp().data.apiUrl + '/promotion/steps',
data: {
encryptedData: encryptedData,
iv: iv,
appid: appid,
session_key: session_key,
},
method: 'POST',
header: {
'Content-type': 'application/json', // 默認(rèn)值
'project': 'xxxxx' //這里是我這接口的設(shè)置,可以忽略
},
dataType: 'json',
success: function (res) {
console.log(res);
}
});
},
fail: function (res) {
wx.showModal({
title: '提示',
content: '開發(fā)者未開通微信運(yùn)動(dòng),請(qǐng)關(guān)注“微信運(yùn)動(dòng)”公眾號(hào)后重試',
showCancel: false,
confirmText: '知道了'
})
}
})

}
})
}

獲取到的encryptedData?,?iv?,?session_key,?appid,這一類是加密文件,需要傳到服務(wù)器后端參與解密。這里說到的解密, 這里的數(shù)據(jù)截圖如下:

文檔里有講到:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-decode

小程序可以通過各種前端接口獲取微信提供的開放數(shù)據(jù)。考慮到開發(fā)者服務(wù)端也需要獲取這些開放數(shù)據(jù),微信提供了兩種獲取方式,我這里用到的第一種方式。

開發(fā)者后臺(tái)校驗(yàn)與解密開放數(shù)據(jù)

微信會(huì)對(duì)這些開放數(shù)據(jù)做簽名和加密處理。開發(fā)者后臺(tái)拿到開放數(shù)據(jù)后可以對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)簽名和解密,來保證數(shù)據(jù)不被篡改。

簽名校驗(yàn)以及數(shù)據(jù)加解密涉及用戶的會(huì)話密鑰 session_key。開發(fā)者應(yīng)該事先通過 wx.login 登錄流程獲取會(huì)話密鑰 session_key 并保存在服務(wù)器。為了數(shù)據(jù)不被篡改,開發(fā)者不應(yīng)該把 session_key 傳到小程序客戶端等服務(wù)器外的環(huán)境。

加密數(shù)據(jù)解密算法

接口如果涉及敏感數(shù)據(jù)(如wx.getUserInfo當(dāng)中的 openId 和 unionId),接口的明文內(nèi)容將不包含這些敏感數(shù)據(jù)。開發(fā)者如需要獲取敏感數(shù)據(jù),需要對(duì)接口返回的加密數(shù)據(jù)(encryptedData) 進(jìn)行對(duì)稱解密。解密算法如下:對(duì)稱解密使用的算法為 AES-128-CBC,數(shù)據(jù)采用PKCS#7填充。對(duì)稱解密的目標(biāo)密文為 Base64_Decode(encryptedData)。對(duì)稱解密秘鑰 aeskey = Base64_Decode(session_key), aeskey 是16字節(jié)。對(duì)稱解密算法初始向量 為Base64_Decode(iv),其中iv由數(shù)據(jù)接口返回。

下面的例子我已經(jīng)封裝在laravel5.8,原生的demo可見文檔下載處。引入文件把文件放在app目錄下,我命名為steps,然后在composer.json的autoload處,增加classmap。
 "autoload": {
"classmap": [
"app/steps"
]
},

然后運(yùn)行語句:composer dump-autoload

index.php

這里的encryptedData?,?iv?,?session_key,?appid,就暫時(shí)寫死了,你可以通過POST過來而獲取到數(shù)據(jù).

public function index(){
try{

//1:wx后臺(tái)得到
$appid = 'wx06****454e37b';
//2:[客戶端]發(fā)送到服務(wù)器js_code(服務(wù)器用js_code換取sessionKey)
$sessionKey = 'diqMTiHO*****ndsdr1MSkQ==';
//3:[客戶端]發(fā)送到服務(wù)器(客戶端getUserInfo()獲取)
$encryptedData="rvCEuvIXURTceySws/XpwPdEQ68cEDFNWF8Mm23S3y/dnMS3...";
//4:[客戶端]發(fā)送到服務(wù)器(客戶端getUserInfo()獲取)
$iv = 'QG5vntg****qQUztOmw==';
//用appid、sessionKey初始化“解密處理類
$pc = new WXBizDataCrypt($appid,$sessionKey);
//執(zhí)行解密,正確返回$data,錯(cuò)誤返回$errCode
$errCode = $pc->decryptData($encryptedData, $iv, $data);

if ($errCode == 0) { //0表示正常
$result = $data . "
";
} else {
$result = $errCode . "
";
}

$ret = [
'code' => 1,
'data' => $result,
];

}catch (Exception $e){

$ret = "提示信息:".$e->getMessage()."行:".$e->getLine();

}

return $ret;
}
wxBizDataCrypt.php,這個(gè)是解密的主要文件
<?php /**
* 對(duì)微信小程序用戶加密數(shù)據(jù)的解密示例代碼.
*
* @copyright Copyright (c) 1998-2014 Tencent Inc.
*/include_once "errorCode.php";class WXBizDataCrypt{private $appid;private $sessionKey;/**
* 構(gòu)造函數(shù)
* @param $sessionKey string 用戶在小程序登錄后獲取的會(huì)話密鑰
* @param $appid string 小程序的appid
*/public function __construct( $appid, $sessionKey){$this->sessionKey = $sessionKey;$this->appid = $appid;
}/**
* 檢驗(yàn)數(shù)據(jù)的真實(shí)性,并且獲取解密后的明文.
* @param $encryptedData string 加密的用戶數(shù)據(jù)
* @param $iv string 與用戶數(shù)據(jù)一同返回的初始向量
* @param $data string 解密后的原文
*
* @return int 成功0,失敗返回對(duì)應(yīng)的錯(cuò)誤碼
*/public function decryptData( $encryptedData, $iv, &$data ){if (strlen($this->sessionKey) != 24) {return ErrorCode::$IllegalAesKey;
}
$aesKey=base64_decode($this->sessionKey);if (strlen($iv) != 24) {return ErrorCode::$IllegalIv;
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($encryptedData);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$dataObj=json_decode( $result );if( $dataObj == NULL )
{return ErrorCode::$IllegalBuffer;
}if( $dataObj->watermark->appid != $this->appid )
{return ErrorCode::$IllegalBuffer;
}
$data = $result;return ErrorCode::$OK;
}
}
錯(cuò)誤信息文件,errorCode.php
<?php /**
* error code 說明.
*

* -41001: encodingAesKey 非法
* -41003: aes 解密失敗
* -41004: 解密后得到的buffer非法
* -41005: base64加密失敗
* -41016: base64解密失敗
*
*/class ErrorCode{public static $OK = 0;public static $IllegalAesKey = -41001;public static $IllegalIv = -41002;public static $IllegalBuffer = -41003;public static $DecodeBase64Error = -41004;
}?>

總結(jié)

以上是生活随笔為你收集整理的ios11修改微信步数_小程序同步微信步数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。