繁体   English   中英

为什么会收到TweepError('需要验证!')?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM