我正在尝试使用tweepy API流,但我一直收到错误401.我在网上寻找线索,我找到的每个帖子都说是因为时区设置。那可能不是我的情况。
在我的场景中,我可以与Twitter API(verify_credentials)进行通信,但是当我创建一个Stream对象并使用filter方法触发它时,我不断收到错误401.这是我的监听器上课:
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text)
def on_error(self, err):
print(err)
这是我正在测试的代码:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
listener = MyStreamListener()
myStream = tweepy.Stream(auth=api.auth, listener=listener)
401
api.verify_credentials()
User(_api=<tweepy.api.API object at 0x02E30DF0>, _json={'id':...})
如您所见,api.verify_credentials()成功。但是在创建流时,我会收到错误401(根据twitter的文档,未经授权和其他方案)。
来自tweepy模型的更多调试输出:
2018-01-14 20:51:43,025 requests_oauthlib.oauth1_auth - DEBUG: Updated url: https://stream.twitter.com/1.1/statuses/filter.json?delimited=length
2018-01-14 20:51:43,025 requests_oauthlib.oauth1_auth - DEBUG: Updated headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '17', 'Authorization': 'OAuth oauth_nonce="xxx", oauth_timestamp="1515955903", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="xxx", oauth_token="xxx-xxx", oauth_signature="xxx"'}
2018-01-14 20:51:43,025 requests_oauthlib.oauth1_auth - DEBUG: Updated body: 'track=python%2Clive'
2018-01-14 20:51:43,026 urllib3.connectionpool - DEBUG: Starting new HTTPS connection (1): stream.twitter.com
2018-01-14 20:51:44,675 urllib3.connectionpool - DEBUG: https://stream.twitter.com:443 "POST /1.1/statuses/filter.json?delimited=length HTTP/1.1" 401 283
2018-01-14 20:51:44,676 api.twitter - ERROR: error occurred while listening for new statuses: err=401
到目前为止,我已经尝试过:
我正在使用Python 3.6.4和Tweepy 3.5
这是非常基本的情况。任何建议都非常受欢迎。
答案 0 :(得分:2)
我很惭愧,但这是由于时区问题。我的Windows配置了自动时间,但是当我查看Date&amp;时间 - &gt;上网时间,我注意到与windows ntp服务器同步存在问题。
我配置了其他东西,现在按下更新,让它工作,我的代码现在正常工作。因此,如果您遇到此问题,VERIFY windows ntp服务器也可以访问并为您工作。