PHP中的API令牌身份验证问题

时间:2018-12-29 14:07:33

标签: php api http get httprequest

首先,我想说我不是英语(法语),所以这有时会带来一些错误。

所以我的问题是我正在尝试使用网站的API,该文档可以在documentation

中找到

问题在于需要身份验证的请求,对于公共请求,一切都很好。

所以我尝试了根据网站“检索帐户余额”的第一个请求,该请求是一个签名的get方法(使用hmac256有效负载)。

事情变得越来越困难,因为文档说有效载荷必须是recvWindow = 5000×tamp = 1540203005798(在篡改前带有怪异的叉号),即使我认为这更多是显示问题或我们可以在其中找到文档的另一行:recvWindow = 5000&timestamp = 我的时间戳。 所以这是第一个问题,因为我不知道在有效负载中使用哪个。 (但是我已经尝试了两者,但没有成功……)。

然后我写了一个快速的php脚本来检索我的信息:

<?php
include('pwd.php');
$time = time()*1000;
$sign = hash_hmac('sha256', 'recvWindow=5000&timestamp='.$time, $private);

$opts = array(
'http'=>array(
    'method'=>"GET",
    'header'=> array("Authorization" => $public,
                     "Signature" => $sign
    )
));

$context = stream_context_create($opts);

$fp = file_get_contents('https://trade.coss.io/c/api/v1/account/balances? 
recvWindow=5000&timestamp='.$time, false, $context);
echo $fp;
?>

第一个include juste包括我的公钥和私钥。

我想不通找出此脚本的问题,因为我尝试对每个带有十字架的有效负载进行交叉,而没有将带有固定时间戳的时间戳与十字架进行交叉,但是没有任何作用,我只得到500错误。

任何一种帮助都是很好的。

1 个答案:

答案 0 :(得分:0)

我找到了我的问题的答案,它的出处是语法错误的标头,而不是我写的正确方法是:

$opts = array(
'http'=>array(
    'method'=>"GET",
    'header'=> array("Authorization: ".$public,
                     "Signature: ".$sign
    )
));