2011-06-01 88 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;