养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

腾讯统计/平台sig生成算法(js版)

时间:2024-11-08 09:38:31

腾讯云统计h5接入接口请求时sig参数计算,官方提供了php的样例,这里提供js的样例,提供该sig参数的详细算法(参数数组排序及md5加密等),适用于腾讯所有平台类似sig计算,本人已应用到个人博客访问量统计请求等真实可用,如果sig算法文档有新修改不匹配的,请指正。

工具/原料

IDE编辑器sublime、webstorm等

方法/步骤

1、腾讯关于sig算法说明(通用):双方维护同一份私钥,在发起请求擢爻充种的时候,发起方(合作方)将当前的请求参数数组芟坳葩津,按照key值进行排序,然后'key=value'拼接到加密串后,进行md5的编码。接收方(H5轻应用统计)以同样的处理方式,对ts小于或等于30分钟的请求进行处理,sig一致则合法,否则失败。php样例:$secret_key='3023IU&^_W(5#@'; ksort($params); foreach($paramsas$key=>$value){ $secret_key.=$key.'='.$value; } $sign=md5($secret_key);return$sign

2、在我们发送请求时,官方会对sig进行对比验证合法性,要求将请求参数数组如:{id:a,as:b}进行key值排序在直接key=value排序,那要将参数json数组排序,a排列最前z最后,则例子应该是{as:b,id:a},拼接后是as=b&id=a,了解这个思路后,我们开始用js来处理。

3、1.首先我们可以将参数随意拼接到url上,像这样:http:123.com?app_id=500558827&start_date=2017-12-05&end_date=2017-12-06&idx=pv

4、然后执行将url参数处理成json数组js函数:parseQueryStrin壹执慵驾g:function(url)惺绅寨瞀{varreg_url=/^[^\?]+\?([\w\W]+)$/,reg_para=/([^&=]+)=([\w\W]*?)(&|$|#)/g,arr_url=reg_url.exec(url),ret={};if(arr_url&&arr_url[1]){varstr_para=arr_url[1],result;while((result=reg_para.exec(str_para))!=null){ret[result[1]]=result[2];}}returnret;}

5、将数组按key排序后按key=value拼接处理: objKeySort:function(obj){varsec=this.你自己的私钥secret_key; varnewkey=Object.keys(obj).sort(); varnewObj='';//以下代码为key=value拼接方法 for(vari=0;i<newkey.length;i++){ sec=sec+(newkey[i]+'='+obj[newkey[i]]) } returnsec}

6、最后在html里引入md5:<scriptsrc="http://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.js"></script>执行md5js代码:md5(obj)

7、完整示例:我们将参数拼接进掼鸿乡羰url:http:123.com?app_id=500558827&start_date=2017-12-扉钛笆哇05&end_date=2017-12-06&idx=pv;js完整代码:varreal_url=http:123.com?app_id=500558827&start_date=2017-12-05&end_date=2017-12-06&idx=pv;生成sig=md5(objKeySort(parseQueryString(real_url)))本人也写了一个简单sig生成工具:可以直接输入拼接url即可生成sig:

腾讯统计/平台sig生成算法(js版)

© 一点知识