0

我正在尝试使用 SnapHacks 库,但我遇到了 Api 调用问题。

该库可以在这里找到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: out: 930a7554e36155186e1cffeaf0af9c4423e94d8519ef1a8069b4c714d7c51a5b SNAPHAX DEBUG : POST 参数:{"username":"MyUsername","password":"MyPassword","timestamp":1.37216038466e+12,"req_token":"930a7554e36155186e1cffeaf0af9c4423e94d8519ef1a8069b4c714d7c51a5b"} SNAPHAX DEG: HTTP 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,将获得帮助

4

3 回答 3

2

在 snaphax.php 中更改时间函数,以将时间戳作为字符串返回:

    function time() {
        return round(microtime(false) * 1000);
    }
于 2013-07-27T22:50:08.607 回答
1

您的时间戳应该是一个字符串。在您的 POST 请求中,它显示为 Snapchat 无法识别的 long,因此它将您的身份验证令牌标记为无效

于 2013-07-24T07:57:31.837 回答
0

您的时间戳字符串不正确,这是因为您在 php.ini 中设置的精度错误

它应该是精度= 16

更改它以纠正问题;或使用类似的东西作为解决方法

function time() {
                        round(microtime(true) * 1000);
                        return round(preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime(1)));


                }
于 2013-12-16T03:08:23.050 回答