2013-06-12 31 views
2

我試圖建立一個「跟隨」按鈕,其上方有一個垂直跟隨者數量。我有一個解決方案,直到Twitter現在停止1.0 API,現在需要Oauth解決方案。我的問題是,什麼是最好的,最簡單的解決方案(最好是JS)。獲取用戶跟隨者數量1.1 - 410 Gone

這裏是舊的解決方案

$.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) 
+1

http://stackoverflow.com/a/15314662/772309 –

回答

2

首先錯誤,根據official sources

您從執行OAuth的操作氣餒通過客戶端Javascript。您應該在服務器端執行這些請求。如果您希望用戶交互更加客戶端,那麼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]包含在URL中的API版本。

最後,任何推特網址與/1/而不是/1。1/將不再承擔任何請求,並且您將始終得到410 (Gone)響應。時間到了1.1!

+0

感謝您的詳細解答和你寫的php幫手。我環視了一下,這是最簡單的解決方案,只是啓動和運行。 –

+1

@RyanGrush無後顧之憂。使用API​​的快捷方法加載一個複雜的庫是毫無意義的。簡單的單一文件包括它應該如何:) – Jimbo

+0

是的,我不能同意更多,我希望更多的人以這種方式接近它。再次感謝! –

11

我跟着this step。而獲得的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」,並獲得追隨者計數。

歡呼聲。

+1

其工作......謝謝@Meenakshi Sundaram R –

2

由於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上保持相同的標記 - 一個隱藏input元素的結束後, </html>