[英]Why am I receiving a TweepError('Authentication required!')?
我正在尝试使用Tweepy创建一个Twitter机器人,该机器人将搜索我的时间轴上的tweet,并找到与特定关键字(“ brexit”)匹配的tweet,然后将这些tweet转发。 我的开发者帐户与我要转发的帐户相同。
我相信,我已经遵循了本书的所有内容。 这是我的代码:
import tweepy
from tweepy import OAuthHandler
import time
auth = tweepy.OAuthHandler("XXX", "XXX")
auth.set_access_token("XXX", "XXX")
api = tweepy.API(auth)
class listener(tweepy.StreamListener):
def on_status(self, status):
print("Tweet arrived!")
print("Authors name: %s" % status.author.screen_name)
status.retweet()
time.sleep(10)
def on_error(selfself, status_code):
if status_code == 420:
return False
keywords = ["brexit"]
def search_tweets():
api = tweepy.API(auth)
tweetlistener = listener()
stream = tweepy.Stream(tweepy.api.home_timeline(), listener = tweetlistener)
stream.filter(track=keywords)
search_tweets()
但是,我收到以下错误消息:
Traceback (most recent call last):
File "C:/Users/borde/Documents/PythonProjects/brexitbot/botcode.py", line 29, in <module>
search_tweets()
File "C:/Users/borde/Documents/PythonProjects/brexitbot/botcode.py", line 26, in search_tweets
stream = tweepy.Stream(tweepy.api.home_timeline(), listener = tweetlistener)
File "C:\Users\borde\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tweepy\binder.py", line 245, in _call
method = APIMethod(args, kwargs)
File "C:\Users\borde\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tweepy\binder.py", line 44, in __init__
raise TweepError('Authentication required!')
tweepy.error.TweepError: Authentication required!
我试图重置密钥,以确保它们没有超时,但是仍然无法正常工作。 我还尝试过更改侦听器类,以便只打印找到的推文,而不是转发它们。
我对此是全新的,任何帮助将不胜感激。
谢谢。
如果查看文档 ,您将看到该Stream
调用的第一个参数应该是实例化的api对象的auth属性:
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
您只是实例化了TWICE api,而根本没有使用它。 从search_tweets
删除重复的行,并实例化流,如下所示:
stream = tweepy.Stream(auth=api.auth, listener = tweetlistener)
PS:您传递的是实例而不是类,c / p是以下内容而不是函数:
def search_tweets():
stream = tweepy.Stream(auth=api.auth, listener=listener)
stream.filter(track=keywords)
顺便说一句,您应该以大写字母开头的类命名,将class listener(tweepy.StreamListener):
更改为class Listener(tweepy.StreamListener):
在我刚刚提供的代码中: listener=Listener
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.