2017-04-20 81 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版本? –