2

我正在尝试构建一个“关注”按钮,其上方有一个垂直关注者计数。在 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) 
4

3 回答 3

11

我按照这一步。并获得推特追随者人数

使用此代码

$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>";

您可以更改“screen_name”并获取关注者数量。

干杯。

于 2013-06-14T06:30:32.480 回答
2

首先,根据官方消息

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

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


您正在410 (Gone)从他们的 API 获得响应代码。让我们看看这实际上意味着什么:

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

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

在此处输入图像描述

截至昨天(2013 年 6 月 11 日),之前已弃用的 v1.0 API 已停用。这意味着该资源将不再可用,您需要升级到 v1.1 API。

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

不知道为什么,但是您已经将最有用的答案发布为评论,但是是的,这是我编写的一个简单库,旨在帮助你们过渡到 twitter API 的 v1.1。

你的回应:GET https://api.twitter.com/1/[Emphasis my own]在 URL 中包含 API 版本。

最后,任何带有/1/而不是/1.1/的 twitter url将不再接受任何请求,并且您将始终得到410 (Gone)响应。是时候升级到 1.1 了!

于 2013-06-12T08:47:13.420 回答
2

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

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

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)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="follower-count">

当然,这有点脆弱,并且取决于 Twitter 保持相同的标记 -input关闭后的隐藏元素</html>

于 2015-03-21T05:51:37.710 回答