我正在尝试使用Tweepy检索Twitter数据,使用下面的代码,但我返回401错误,我重新生成访问和秘密令牌,并出现相同的错误。
#imports
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
#setting up the keys
consumer_key = 'xxxxxxx'
consumer_secret = 'xxxxxxxx'
access_token = 'xxxxxxxxxx'
access_secret = 'xxxxxxxxxxxxx'
class TweetListener(StreamListener):
# A listener handles tweets are the received from the stream.
#This is a basic listener that just prints received tweets to standard output
def on_data(self, data):
print (data)
return True
def on_error(self, status):
print (status)
#printing all the tweets to the standard output
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
stream = Stream(auth, TweetListener())
t = u"#سوريا"
stream.filter(track=[t])
答案 0 :(得分:9)
只需重置系统的时钟。
如果要求进行身份验证的API请求来自声称时间超过Twitter时间15分钟的服务器,则会因401错误而失败。
THANKYOU
答案 1 :(得分:4)
您可能在从-
页面复制访问令牌时犯了一个错误。
您需要复制作为访问令牌提供的整个内容,而不仅仅是74376347-jkghdui456hjkbjhgbm45gj
之后的字符串。
例如,复制并粘贴整个字符串,例如jkghdui456hjkbjhgbm45gj
,而不仅仅是double d = (double)e.Value;
。
[注意上面的字符串只是我为了演示目的而随机输入的内容。你的实际访问令牌也会看起来像这样,即 "一串数字 - 一个字母数字字符串"]
答案 2 :(得分:1)
我遇到了同样的问题 - 这里没有任何解决方法。对我来说,诀窍是使用 Tweepy 流式传输推文显然需要 1A 身份验证,而不是 2A(请参阅 - https://github.com/tweepy/tweepy/issues/1346)。这意味着您需要在身份验证对象中使用访问令牌和消费者令牌。
import tweepy
# user credentials
access_token = '...'
access_token_secret = '...'
consumer_key = '...'
consumer_secret = '...'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
# this is the main difference
auth.set_access_token(access_token, access_token_secret)
stream = tweepy.Stream(auth, tweepy.StreamListener)
答案 3 :(得分:0)
你只需要在双引号中显示你的钥匙 并且您不必在上次Twitter身份验证中定义密钥。
glob()
答案 4 :(得分:0)
在我的情况下发生错误是因为我使用的是AppAuthHandler
而不是OAuthHandler
。切换到OAuthHandler
解决了问题。