Tweepy流返回401 Authorization Required

时间:2017-04-20 11:29:25

标签: python twitter oauth tweepy twython

我正在尝试连接到twitter stream api以实时获取推文。这段代码一直工作到5-6之前。突然间,我一直开始接收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. 我的应用程序具有正确的权限,我在配置后收到了访问令牌和密码。
  5. 以下是请求:

    '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上得到了相同的回复。

    由于

2 个答案:

答案 0 :(得分: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)

这应该有效。 也许您的机器人未在帐户上获得授权,这可能是错误。但我不认为是这种情况。

如果你想要一个例子,请查看我的BOT的身份验证: ED_Postcards BOT
(带有漂亮代码的新版本)

答案 1 :(得分:0)

经过2周的故障排除后,我能够解决问题。对于tweepy,您需要手动设置用于通过twitter进行身份验证的auth对象的回调URL。

此修正后,请前往apps.twitter.com并取消选中“允许此应用程序用于使用Twitter登录”框。 Twitter API对于错误消息并不简洁。

相关问题