在仔细查看
这个PHP文件后,我很确定您需要对API签名进行MD5哈希处理。
导入一个MD5库,例如
这个。
<script type="text/javascript" src="jquery.md5.min.js"></script>
然后可以执行以下操作:
var sig = "api_key=" + api_key + "expire=" + expire + "from_date=" + from_date + "to_date=" + to_date + "bigsecret2";
sig = $.md5(sig);
我正在尝试实现与您相同的事情,但不幸的是我还没有使其工作。
编辑- 这很困难。如果任何参数没有使用sig进行哈希处理,则API将失败。如果包括任何不属于API的参数,则也会失败。JsonP添加了一个“callback”和一个“_”时间戳参数,以便它可以执行它的功能,但这会破坏调用。您可以通过使用
cache:true
排除时间戳并使用特殊的jsonp插件来解决此问题,该插件允许您重命名
callback
参数。在这里,我已将其重命名为
to_date
,并将回调函数命名为“2012-10-29”。这很疯狂,但仍然无法正常工作,因为回复不是有效的json。它是一系列换行符分隔的json对象,无法评估,我仍然卡在那个部分。到目前为止,我已经得到了以下结果:
<script type="text/javascript" src="jquery-1.8.2.js"></script>
<script type="text/javascript" src="jquery.md5.min.js"></script>
<script type="text/javascript" src="jquery.jsonp-2.4.0.js"></script>
<script>
var events = document.getElementById("events");
var api_key = "secret";
var expire = "1351811239";
var from_date = "2012-10-29";
var to_date = "2012-10-29";
var sig = "api_key=" + api_key + "expire=" + expire + "from_date=" + from_date + "to_date=" + to_date + "secret2";
sig = $.md5(sig);
var path = 'https://data.mixpanel.com/api/2.0/export?api_key=' + api_key + "&expire=" + expire + "&from_date=" + from_date;
path = path + "&sig=" + sig;
$.jsonp({
type: 'GET',
url: path,
async: false,
callback: to_date,
callbackParameter: 'to_date',
contentType: "application/json",
dataType: 'jsonp',
cache: true,
success: function(json) {
alert(json);
},
error: function(e) {
console.log(e.message);
}
});
</script>
最终,我放弃了,并写了一个C#程序来调用API并为我生成CSV文件。