获得1.1 - 410 Gone的用户关注者数量

时间:2013-06-12 04:58:48

标签: twitter twitter-oauth

我正在尝试构建一个“关注”按钮,其上方有一个垂直关注者。我有一个解决方案,直到Twitter今天退出1.0 API,现在需要一个Oauth解决方案。我的问题是,最好的,最简单的解决方案是什么(最好是JS)。

这是旧解决方案

$.getJSON("https://api.twitter.com/1/users/show.json?callback=?&screen_name=twitter",

function(data) { 
    $('.here').text(data);
});

我现在得到的错误

GET https://api.twitter.com/1/users/show.json?callback=jQuery20205200183007400483_1371012819892&screen_name=twitter&_=1371012819893 410 (Gone) 

3 个答案:

答案 0 :(得分:11)

我关注this step。并获得推特关注者数

使用此代码

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name=Android';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$follow_count=$twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();
            $testCount = json_decode($follow_count, true);
echo "<pre>";
echo $testCount[0]['user']['followers_count'];
echo "</pre>";

您可以更改&#34; screen_name&#34;并得到关注者。

欢呼声。

答案 1 :(得分:2)

首先,根据official sources

  

不鼓励您通过客户端Javascript执行OAuth操作。您应该在服务器端执行这些请求。如果您希望用户交互更加客户端,那么AJAX调用应该是您自己后端的安全调用,以启动推文过程。

没有任何简单的方法可以通过AJAX对新的1.1 API执行客户端请求。您应该使用某种服务器端语言来执行此事务,例如


您的API会收到 410 (Gone) 响应代码。让我们看看这实际意味着什么:

  

表示请求的资源不再可用,将无法再次使用。当有意删除资源并清除资源时,应使用此方法。收到410状态代码后,客户端不应再次请求资源 [强调我自己]

现在让我们来看看最新的Twitter API新闻:

enter image description here

截至昨天(2013年6月11日),之前已弃用的v1.0 API已停用。这意味着资源将无法再次使用,您需要进入v1.1 API。

v1.1 API需要经过身份验证的请求,通常使用OAuth或“特定于应用程序”。

不确定原因,但您已经发布了最多helpful answer作为评论,但是是的,我写的simple library是为了帮助您转换到Twitter API的v1.1。

您的回复:GET https://api.twitter.com /1/ [Emphasis my own] 包含网址中的API版本。

最后,任何带有 / 1 / 而不是 /1.1 / 的推特网址将不再接受任何请求,您将始终获得{{1响应。是时候搬到1.1了!

答案 2 :(得分:2)

由于Twitter停止提供的API不需要对简单的只读操作进行身份验证,例如获取关注者数量,因此它们应该被废弃。

我们use YQL获取用户的Twitter页面,然后解析关注者计数。这也适用于客户端,没有同源限制:

&#13;
&#13;
function getFollowerCount(username, callback) {
  $.getJSON("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'http%3A%2F%2Ftwitter.com%2F" + username + "'%20and%20xpath%3D'%2F%2Finput%5B%40id%3D%22init-data%22%5D'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys", function (data) {
    callback(data.query.results.input.value.match(/followers_count":(\d+)/)[1]);
  });
}

getFollowerCount('dandv', function (count) {
  $('#follower-count').text(count)
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="follower-count">
&#13;
&#13;
&#13;

当然,这有些脆弱,取决于Twitter保留相同的标记 - 在结束input后隐藏</html>元素。