我试图使用SnapHacks Library,但我遇到了Api Call问题。
可在此处找到该库https://github.com/jasonanovak/snaphaxpy
当我进行此Api通话时:
$opts['username'] = $_POST['u'];
$opts['password'] = $_POST['p'];
$opts['debug'] = TRUE;
$s = new Snaphax($opts);
$result = $s->login();
我收到回复:
SNAPHAX DEBUG:P1:m198sOkJEn37DjqZ32lpRu76xmw288xSQ9 SNAPHAX DEBUG:P2:1.37216038466E + 12 SNAPHAX DEBUG:S1:iEk21fuwZApXlz93750dmW22pw389dPwOkm198sOkJEn37DjqZ32lpRu76xmw288xSQ9 SNAPHAX DEBUG:S2:1.37216038466E + 12iEk21fuwZApXlz93750dmW22pw389dPwOk SNAPHAX DEBUG:S3:93046e57a3c183186e9e24ebfda7ca04e7eb4d8119060a8a39b48014d4c5172b SNAPHAX DEBUG:S4:bfea75d4e369551c251cff3a308f9c4a23f96c75f9ef161068a7c7946713da57 SNAPHAX DEBUG:出: 930a7554e36155186e1cffeaf0af9c4423e94d8519ef1a8069b4c714d7c51a5b SNAPHAX DEBUG:POST PARAMS:{ “用户名”: “名为myUsername”, “密码”: “MyPassword输入”, “时间戳”:1.37216038466e + 12 “req_token”: “930a7554e36155186e1cffeaf0af9c4423e94d8519ef1a8069b4c714d7c51a5b”} SNAPHAX DEBUG:HTTP响应code401 SNAPHAX DEBUG: POST返回 错误:未经授权
function login() {
$ts = $this->api->time();
$out = $this->api->postCall(
'/ph/login',
array(
'username' => $this->options['username'],
'password' => $this->options['password'],
'timestamp' => $ts
),
$this->options['static_token'],
$ts
);
if (is_array($out) &&
!empty($out['auth_token'])) {
$this->auth_token = $out['auth_token'];
}
return $out;
}
$ out不会返回令牌
如果有人熟悉图书馆或Snapchat API,可以提供帮助
答案 0 :(得分:2)
在snaphax.php中更改时间函数,以便将时间戳作为字符串返回:
function time() {
return round(microtime(false) * 1000);
}
答案 1 :(得分:1)
您的时间戳应该是一个字符串。在您的POST请求中,它显示为Snapchat无法识别的长,因此它将您的身份验证令牌标记为无效
答案 2 :(得分:0)
您的时间戳字符串不正确,这是因为您的精度在php.ini中设置错误
应该是precision = 16
更改此项以更正问题;或使用类似的解决方法
function time() {
round(microtime(true) * 1000);
return round(preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime(1)));
}