2013-08-20 87 views
1

我越來越從Twitter流API鳴叫一個問題:https://stream.twitter.com/1.1/statuses/filter.jsonTwitter的流API授權

我總是得到錯誤401,未授權的。服務器時間是正確的。

我已經簽名請求。 這是我的代碼(python):

token = oauth.Token(key = TWITTER_ACCESS_TOKEN, secret = TWITTER_ACCESS_TOKEN_SECRET) 
    consumer = oauth.Consumer(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET) 

    params = {'oauth_version': '1.0', 'oauth_nonce': oauth.generate_nonce(), 'oauth_timestamp': int(time.time())} 
    req = oauth.Request(method='POST', parameters=params, url='https://stream.twitter.com/1.1/statuses/filter.json?track=twitter') 
    req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, token) 

    urllib2.urlopen(req.to_url()) 

我在做什麼錯?

請幫幫我。

由於提前, 薩布麗娜

回答

0

您可能是爲它提供不正確的憑據或有導致不正確的簽名來計算的錯誤。將日誌級別設置爲DEBUG可能對此有所幫助。

使用我的憑據從twitter application page我沒有問題獲取使用

from requests_oauthlib import OAuth1Session 

key = "<your client key>" 
secret = "<your client secret>" 
token = "<your token here>" 
token_secret = "<token secret>" 

twitter = OAuth1Session(key, client_secret=secret, 
         resource_owner_key=token, 
         resource_owner_secret=token_secret) 

r = twitter.get(
    'https://stream.twitter.com/1.1/statuses/filter.json?track=twitter', 
    stream=True 
) 

for line in r.iter_lines(): 
    if line: 
     print line 

它採用requests-oauthlib流。如果上述操作適用於您,那麼您的憑據是正確的,並且問題可能與您的oauth庫有關。