【问题标题】:Get user follower count with 1.1 - 410 Gone使用 1.1 - 410 Gone 获取用户关注者数量
【发布时间】:2015-12-07 07:41:34
【问题描述】:

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

【问题讨论】:

标签: twitter twitter-oauth


【解决方案1】:

我关注 this step.and 以获取 Twitter 关注者数量

使用此代码

$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”并获取关注者数量。

干杯。

【讨论】:

    【解决方案2】:

    首先,根据official sources

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

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


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

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

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

    截至昨天(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] 在 URL 中包含 API 版本。

    最后,任何带有 /1/ 而不是 /1.1/ 的 twitter url 将不再接受任何请求,您将始终收到 410 (Gone)回复。是时候迁移到 1.1 了!

    【讨论】:

    • 感谢您的详细回答和您编写的 php 助手。我环顾四周,这是启动并运行它的最简单的解决方案。
    • @RyanGrush 不用担心。用大量 API 的快捷方法来制作一个复杂的库是没有意义的。简单的单个文件包含应该是这样的:)
    • 是的,我完全同意,我希望更多的人以这种方式接近它。再次感谢!
    • 对于单个追随者而言,这非常复杂。至少 Facebook 允许公众访问这一点。那么为什么我不获取 html 页面来获取关注者的数量呢?它至少无需身份验证即可工作!
    • @AugustinRiedinger 因为如果您正在抓取网页,您不仅会违反他们的服务条款(如果他们检测到您的流量过多,就会禁止您),而且这不仅是不好的做法 - 如果他们随时更改标记,您的脚本将停止工作。它也效率极低正确
    【解决方案3】:

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

    我们将 use 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 保持相同的标记 - 在关闭 &lt;/html&gt; 之后隐藏的 input 元素。

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2017-03-24
      • 2013-06-11
      • 2021-11-25
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多