簡體   English   中英

Twitter 流式傳輸 API 與 OAuth?

[英]Twitter Streaming API with OAuth?

我已經堅持了一段時間。 有誰知道如何使用 OAuth 對 Twitter 流式傳輸 API 請求進行身份驗證? 截至目前,我正在通過基本身份驗證進行身份驗證,我想完全切換到 OAuth。 另外,如果有幫助,我在 Rails 上使用 Ruby。

謝謝

Connecting to the Twitter Streaming API via OAuth is done much the same as connecting via the REST API. 假設您已經協商了訪問令牌,您可以使用與 REST 請求相同的簽名算法來簽署和發出請求。 對於流式 API,最好使用基於標頭的 OAuth,而不是基於查詢字符串。

以下是示例端點的基於 OAuth 的簽名請求示例:

獲取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

簽名后授權Header:

Authorization: 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"

Matt Harris has some sample code in PHP demonstrating connecting to the streaming API via OAuth: https://github.com/themattharris/tmhOAuth/blob/master/examples/streaming.php

http://dev.twitter.com上注冊您的應用程序后,這是在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;

你應該使用這個 gem:位於em-twitter之上的Tweetstream

嘗試支持許多外部提供程序的 OmniAuth gem https://github.com/intridea/omniauth

暫無
暫無

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

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