簡體   English   中英

獲取Twitter home_timeline

[英]Getting Twitter home_timeline

是否可以獲取用戶的Twitter提要(不是他們自己的帖子,而是他們將看到的所有帖子,如果他們查看所有關注的人)?

我從這里使用了代碼:

使用Twitter API版本1.1檢索user_timeline的最簡單的PHP示例

但是無論傳入的是什么$ twitterid,我得到的都是我自己的twitter提要。

function getFeed($twitterid)
{
$url = "https://api.twitter.com/1.1/statuses/home_timeline.json";

$oauth_access_token = "XXXX";
$oauth_access_token_secret = "XXXX";
$consumer_key = "XXX";
$consumer_secret = "XXX";

$oauth = array( 'screen_name' => $twitterid,
                'count' => 3,
                'oauth_consumer_key' => $consumer_key,
                'oauth_nonce' => time(),
                'oauth_signature_method' => 'HMAC-SHA1',
                'oauth_token' => $oauth_access_token,
                'oauth_timestamp' => time(),
                'oauth_version' => '1.0');

$base_info = $this->buildBaseString($url, 'GET', $oauth);
$composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
$oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
$oauth['oauth_signature'] = $oauth_signature;

// Make requests
$header = array($this->buildAuthorizationHeader($oauth), 'Expect:');
$options = array( CURLOPT_HTTPHEADER => $header,
                  //CURLOPT_POSTFIELDS => $postfields,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url . '?screen_name='. $twitterid.'&count=3',
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

return json_decode($json);

}

不幸的是,Twitter不提供此功能。

請參閱home_timeline端點上的文檔: https ://dev.twitter.com/docs/api/1.1/get/statuses/home_timeline

“返回由身份驗證用戶及其關注的用戶發布的最新推文和轉發的集合。”

這里也沒有選項指定user_id或screen_name,因為它使用經過身份驗證的用戶(即您)。

盡管允許您指定用戶,但user_timeline僅用於您自己的推文。

我相信Twitter一度支持此功能,因為他們在網站上具有查看其他用戶時間表的功能,但是此功能已被刪除,並且似乎舊的v1 API中甚至沒有針對該功能的API。

因此,唯一的方法是讓每個用戶對您的應用進行身份驗證,然后加載其時間軸。

盡管Twitter API不支持讀取任何其他人的Twitter feed,但是仍然可能的方法是遵循以下兩個步驟:

1-獲取用戶(例如@abc)的“關注”列表,也稱為“朋友/列表”。 這將返回“用戶”對象的列表,這些對象是人員的詳細信息,@ abc在后面。 下面提供了我使用的示例Ruby代碼。

baseurl = "https://api.twitter.com"
path    = "/1.1/friends/list.json"
query   = URI.encode_www_form("cursor"=>"-1", "screen_name"=>"abc")
address = URI("#{baseurl}#{path}?#{query}")
request = Net::HTTP::Get.new address.request_uri

http             = Net::HTTP.new address.host, address.port
http.use_ssl     = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
consumer_key     = OAuth::Consumer.new( your_consumer_key , your_consumer_secret )
access_token     = OAuth::Token.new(your_access_token , your_access_token_secret)

 # Issue the request.
request.oauth! http, consumer_key, access_token
http.start
response       = http.request request
following_list = JSON.parse(response.body)

 following_list["users"].each do |friend|
    read_timeline(friend["screen_name"])
 end

2-從步驟1中獲得的列表中,使用每個“用戶”對象的screen_name或user_id等讀取“ user_timeline”。

def read_timeline(friends_screen_name)

  baseurl = "https://api.twitter.com"
  path    = "/1.1/statuses/user_timeline.json"
  query   = URI.encode_www_form("screen_name" => friends_screen_name, "count" => 3,)
  address = URI("#{baseurl}#{path}?#{query}")
  request = Net::HTTP::Get.new address.request_uri

   # Set up HTTP.
  http             = Net::HTTP.new address.host, address.port
  http.use_ssl     = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  consumer_key     = OAuth::Consumer.new( your_consumer_key , your_consumer_secret )
  access_token     = OAuth::Token.new(your_access_token , your_access_token_secret)

   # Issue the request.
  request.oauth! http, consumer_key, access_token
  http.start
  response = http.request request

   # Parse and print the Tweet if the response code was 200
  if response.code == '200' then
    tweets = JSON.parse(response.body)
      tweets.each do |tweet|
        puts tweet["user"]["name"] + ":\t" + tweet["text"]
      end 
  end
end

有關更多詳細信息,請分別訪問以下鏈接:

1- https://dev.twitter.com/docs/api/1.1/get/friends/list

2- https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM