Pinterest API未按预期工作

3

我正在尝试使用PHP使用Pinterest API,但目前它并不能正常工作。 我使用这个指南来开始:

https://developers.pinterest.com/docs/api/authentication/

到目前为止,除了第3步之外,我已经让所有东西都运行起来了。文档说只是一个简单的请求:

https://api.pinterest.com/v1/me/?access_token=<YOUR-ACCESS-TOKEN>

  1. 进行身份验证的请求

最后,一旦您拥有访问令牌,您可以使用OAuth 2.0 Bearer令牌代表用户进行授权请求, 通过Authorization请求标头或通过名为access_token的请求参数提供,其中access_token(作为表单编码的主体参数或URI查询参数之一)。 优先选择Authorization标头。

例如,您可以在浏览器上访问此网站:

https://api.pinterest.com/v1/me/?access_token= 一个示例响应可能如下所示:

{ "data": { "url": "https://www.pinterest.com/ben/", "first_name": "Ben", "last_name": "Silbermann", "id": "4788400174839062" } }

我有一个access_token看起来像这样:

AcFFayZKwqXuKVkj1J-0QN1fCob1FAgjuP9-OtFCg_j49UAgogXXXXX

但每次我都收到以下消息:

{"status": "failure", "code": 3, "host": "coreapp-devplatform-devapi-181", "generated_at": "Mon, 28 Sep 2015 12:28:38 +0000", "message": "Authorization failed.", "data": null}

我使用以下PHP代码从URL获取数据:
        $curl = curl_init($url);
        curl_setopt_array($curl, array(
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_FORBID_REUSE => true,
            CURLOPT_FRESH_CONNECT => true,
            CURLOPT_HEADER => false,
            CURLOPT_HTTPHEADER => array("Content-Type: application/x-www-form-urlencoded"),
            CURLOPT_NOBODY => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CONNECTTIMEOUT => 30,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_USERAGENT => self::userAgent()
        ));
        $result = curl_exec($curl);
        var_dump($result);
        $errorCode = curl_errno($curl);
        $respCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        curl_close($curl);
2个回答

2
我刚刚遇到了同样的错误,但是是针对不同的端点。尝试使用以下代码。
        $ch = curl_init();

        $url = "https://api.pinterest.com/v1/me/?access_token='YOUR_ACCESS_TOKEN'";

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $result = trim(curl_exec($ch));
        curl_close($ch);

        print_r($result);  

1
对我没有用。有人能否更新一下,看看这个是否有效? - fredy
为什么原贴作者会使用你的代码?提供一个解释会很有帮助。 - Pedro Lobito
@fredy Pinterest已经部署了修复措施:https://twitter.com/zackargyle/status/648602180002312192 您现在可以再次尝试。 - analog-nico
谢谢@analog-nico,太棒了 :-) - fredy
1
谢谢,这个帮了我很多。我漏掉了CURLOPT_HTTPGET参数。 - user936965

0
请看一下这个讨论。它涵盖了您所描述的完全相同的问题。就我目前所知,这似乎是Pinterest方面的问题。Pinterest开发团队的@ZackArgyle已经得到通知并正在处理此问题。

我已经找到了那个讨论。答案与另一个对Pinterest的调用有关。它不能与我的调用一起工作。正如您所看到的,我发出的请求也不同。 - user936965
我有遗漏什么吗?两个讨论都在谈论 /me 终端点,对吗? - analog-nico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接