通过其url twiiter api php laravel获取Twitter推特喜欢,收藏和转推

时间:2016-03-31 07:49:40

标签: php laravel curl twitter twitter-oauth

您好我正在使用Twitter TwitterAPIExchange(http://github.com/j7mbo/twitter-api-php)laravel 5.2。 我想做的是通过其网址获取推特喜欢,收藏和转推。其中包含网址http://imgurl.co/760598324/1835795511

这是我试过的

$settings = array(
            'oauth_access_token' => access_token,
            'oauth_access_token_secret' => access_token_secret,
            'consumer_key' => CONSUMER_KEY,
            'consumer_secret' => CONSUMER_SECRET
        );
        $encde = urlencode('http://imgurl.co/760598324/1835795511');
        $url = "https://api.twitter.com/1.1/search/tweets.json?url=".$encde;
        $requestMethod = 'GET';

        $twitter = new TwitterAPIExchange($settings);
        $data =  $twitter->buildOauth($url, $requestMethod)
            ->performRequest();
        echo "<pre>";
        print_r($data);

它给了我这个错误

{"errors":[{"code":32,"message":"Could not authenticate you."}]}

如果我直接传递没有编码的网址,那么它会显示整个网页数据,就像我们在浏览器中打开网址一样。

但是使用facebook图表api我只需要在其facebook图表api explorer中粘贴网址以从网址获取数据

我还在TwitterAPIExchange CURLOPT_SSL_VERIFYPEER => false

中设置了performRequest function

我也试过这个解决方案 Twitter API to get tweet and re-tweets count in php 但它说

file_get_contents(): php_network_getaddresses: getaddrinfo failed: No such host is known.

以下是解决上述错误后的响应

{
  "statuses": [

  ],
  "search_metadata": {
    "completed_in": 0.006,
    "max_id": 715462198051602432,
    "max_id_str": "715462198051602432",
    "query": "http%3A%2F%2Fimgurl.co%2F760598324%2F1835795511",
    "refresh_url": "?since_id=715462198051602432&q=http%3A%2F%2Fimgurl.co%2F760598324%2F1835795511&include_entities=1",
    "count": 15,
    "since_id": 0,
    "since_id_str": "0"
  }
}

它没有给我任何推特喜欢,收藏和转推的数据

1 个答案:

答案 0 :(得分:1)

在给定的情况下error code 32表示您的请求无效(格式错误)。

您的请求的问题是它传递了错误的数据。 API端点search/tweets没有url参数。此外,还需要q个参数。由于您未通过q参数,因此您的请求无效。

因此,您必须将数据作为q参数传递。

顺便说一下,您不需要手动对数据进行网址编码并附加到网址。 TwitterAPIExchange有适当的方法setGetfield来设置GET参数。

所以你的代码应该是这样的:

$url = "https://api.twitter.com/1.1/search/tweets.json";
$data = 'q=http://imgurl.co/760598324/1835795511';
$twitter = new TwitterAPIExchange($settings);
$data = $twitter->setGetfield($data)->buildOauth($url, 'GET')
->performRequest();