2011-06-01 122 views
2

我一直堅持這一段時間。有誰知道如何使用OAuth驗證Twitter Streaming API請求?截至目前,我通過基本身份驗證進行身份驗證,並且我想完全切換到OAuth。另外,如果有幫助,我使用Ruby on Rails。Twitter使用OAuth流媒體API?

感謝

回答

3

連接到通過OAuth Twitter的流API完成大部分相同,通過REST API連接。假設您已經協商了一個訪問令牌,您可以使用與REST請求相同的簽名算法簽署和發出請求。使用Streaming API時,最好使用基於頭的OAuth,而不是基於查詢字符串。

下面是樣品終點簽名基於OAuth的請求的例子:

GET http://stream.twitter.com/1/statuses/sample.json

簽名基本字符串例子:

GET & HTTP%3A%2F%2Fstream .twitter.com%2Fstatuses%2Fsample.json & oauth_consumer_key%3Dri8JxYK2ddwSV5xIUfNNvQ%26oauth_nonce%3DUJb0f3nHhFQkpkWkJzxnFT65xX1TZeuGjww6Q2XWs4%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1306947138%26oauth_token% 3D819797-torCkTs0XK7H2Y2i1ee5iofqkMC4p7aayeEXRTmlw%26oauth_version%3D1.0

認證頭簽署後:

授權:OAuth的oauth_consumer_key = 「ri8JxYK2ddwSV5xIUfNNvQ」,oauth_nonce = 「UJb0f3nHhFQkpkWkJzxnFT65xX1TZeuGjww6Q2XWs4」,oauth_signature = 「bN14zlBIdCZCSl9%2B8UV8dB2VWjI%3D」,oauth_signature_method = 「HMAC-SHA1」,oauth_timestamp = 「1306947138」,組oauth_token = 「819797-torCkTs0XK7H2Y2i1ee5iofqkMC4p7aayeEXRTmlw」,oauth_version = 「1.0」

馬特哈里斯在PHP一些示例代碼通過OAuth展示連接到流API:https://github.com/themattharris/tmhOAuth/blob/master/examples/streaming.php

+0

嗨,我看着你的答案,現在我明白如何構建基本字符串和授權標題。然而,現在我被困在如何將數據正確地發佈到ruby的Twitter流中。截至目前,我正在使用yajl創建一個httpstream,只使用基本身份驗證發佈到Twitter流。 – 2011-06-02 18:53:19

1

這是它是如何在Perl完成:

#!/usr/bin/perl 

use strict; 
use AnyEvent::Twitter::Stream; 

if ($ENV{FIREHOSE_SERVER}) { 
    $AnyEvent::Twitter::Stream::STREAMING_SERVER = $ENV{FIREHOSE_SERVER}; 
} 

my $done = AE::cv; 

binmode STDOUT, ":utf8"; 

my $streamer = AnyEvent::Twitter::Stream->new(
    consumer_key => 'KEY', 
    consumer_secret => 'SECRET', 
    token => 'TOKEN', 
    token_secret => 'TOKEN SECRET', 
    method => "filter", 
    track => "KEYWORDS TO TRACK", 
    on_tweet => sub { 
     # CUSTOM CODE HERE 
    }, 
    on_error => sub { 
     my $error = shift; 
     warn "ERROR: $error"; 
     $done->send; 
    }, 
    on_eof => sub { 
     $done->send; 
    }, 
); 

$done->recv;