2017-04-20 113 views
1

我正在嘗試連接到twitter stream api以實時獲取tweets。這段代碼一直工作到5-6之前。突然之間我開始收到401。奇怪的是,這是發生在我的本地機器和位於雲端的生產服務器上,所以我認爲這不是一個網絡相關的問題。Tweepy streaming returns 401需要授權

下面是代碼:

l = StdOutListener() 

auth = OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 
auth.callback = 'https://localhost' #no effect commented/uncommented 
stream = Stream(auth, l) 
stream.filter(track=['twitter'], languages=["es"]) 

到目前爲止,我已經試過如下:

  1. 生成新的消費重點,消費者的祕密,訪問令牌和訪問令牌的祕密。我使用了以前工作的4種不同的鍵。
  2. 從apps.twitter.com創建一個全新的應用程序。由於有些用戶報告401「需要授權」與Twitter的應用程序頁面中缺少回調URL字段有關,因此填充了回撥網址。
  3. 與我的本地和生產服務器上的ntp服務器同步我的時鐘。我的時鐘沒有關閉。
  4. 我的應用程序具有正確的權限,並在配置後收到訪問令牌和密碼。

這裏是要求:

'Content-Length': '22' 
'Content-Type': 'application/x-www-form-urlencoded' 
'Authorization': 'OAuth oauth_nonce="161484371946745487981492681844" 
    oauth_timestamp="1492681844" 
    oauth_version="1.0" 
    oauth_signature_method="HMAC-SHA1" 
    oauth_consumer_key="<oauth_consumer_key>" 
    oauth_token="<oauth_token>" 
    oauth_signature="tphQqFWaBvEo2byjZ%2BRqNAM30I0%3D"' 
Method: 'POST' 
URL: 'https://stream.twitter.com/1.1/statuses/filter.json?delimited=length' 

任何幫助,爲什麼我收到一個401未授權「需要授權」的反應可以理解。

編輯:我也嘗試過使用Twython,並從Twitter獲得相同的回覆。

感謝

回答

0

我能夠2周後故障排除,以解決這一問題:如果你想要一個例子

看看我的BOT的權威性。對於tweepy,您需要手動設置您用於通過Twitter進行身份驗證的身份驗證對象的回調URL。

在此更正之後,前往apps.twitter.com並取消選中「允許此應用程序用於使用Twitter登錄」複選框。 Twitter API並沒有簡明扼要的錯誤信息。

0

也許你可以嘗試使用Twython的OAuth2連接,如果你不需要鳴叫回 Twython Auth

,或者嘗試使用此代碼。

# Put the consumer keys 
auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") 

# Redirect user to Twitter to authorize 
redirect_user(auth.get_authorization_url()) 

# Get access token 
auth.get_access_token("verifier_value") 

# Construct the API instance 
api = tweepy.API(auth) 

#Create the stream 
streamClass= StdOutListener() 
stream= tweepy.Stream(auth = api.auth, listener=streamClass) 

這應該有效。 也許你的機器人沒有在帳戶上授權,這可能是錯誤。但我不認爲這是事實。 ED_Postcards BOT
(新版本的到來漂亮的代碼)

+0

同樣也是Twython Oauth。你也不需要Oauth2來連接流式端點。 –

+0

您是否使用過時的tweepy版本? –