【问题标题】:Unable to Tweet using create_tweet()无法使用 create_tweet() 发布推文
【发布时间】:2021-12-24 16:39:37
【问题描述】:

我已经为我的 Twitter 开发帐户提供了密钥、密钥和令牌 -

nclient = tweepy.Client(consumer_key=consumer_key, consumer_secret=consumer_sec_key,
                    access_token=auth.access_token, access_token_secret=auth.access_token_secret)

然后我尝试发一条新的推文 -

new_tweet = nclient.create_tweet("First tweet!")

它给了我以下错误-

TypeError: create_tweet() takes 1 positional argument but 2 were given

当我尝试运行以下命令时 -

new_tweet = nclient.create_tweet(text = "First tweet!")

它给了我以下错误-

Forbidden: 403 Forbidden

请帮我解决这个问题。

【问题讨论】:

  • aalways 将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 一些函数使用命名参数——比如create_tweet(text=...)——如果你将它发送为create_tweet(...),它们将不起作用。而403 可能意味着您有错误的 API 密钥。或者模块可能是旧的,它不适用于最新的 API。您可以创建最少的工作代码,这样我们就可以简单地复制并运行它。
  • 您是否在生成访问令牌之前对您的应用设置了读写权限?您确定所有 4 个身份验证值都正确吗?你的应用是 Twitter 应用仪表板中项目的一部分吗?
  • @AndyPiper - 我在我的应用上设置了“读取和写入(读取 + 发布推文和个人资料信息)”权限 -
  • @furas - 我测试了其他命令的 API 密钥 (user1 = api.get_user(screen_name = 'SpaceX')),这些都可以正常工作。

标签: python twitter tweepy


【解决方案1】:

TypeError 是因为 Client.create_tweet 不接受 text 作为位置参数。错误中引用的 1 个位置参数是 self。

根据this comment,您很可能使用没有写入权限的凭据。如果您已经为您的应用授予写入权限,则需要在之后重新生成您的凭据并使用这些新凭据。

见the FAQ section on this in Tweepy's documentation。

如果这不是问题,请确保您使用的不是独立应用。 Twitter API v2 requires that you use a Project.

【讨论】:

    【解决方案2】:

    我从 Twitter 应用程序中撤销了以前的密钥和令牌并重新生成了它们。然后我在下面的命令中使用它,现在我可以发推文、删除推文并进行其他活动。

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tweepy.API(auth)
    new_tweet = api.update_status(status = 'First tweet from #python !') #post a tweet
    new_tweet.destroy() # delete a tweet
    

    感谢大家提供的帮助!

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 2012-04-01
      • 2011-06-19
      • 2021-08-03
      • 2017-05-12
      • 1970-01-01
      • 2011-10-21
      • 2013-10-20
      • 2021-04-11
      相关资源
      最近更新 更多