用tweepy发布推文

11

我正在尝试使用 tweepy 库发布一条推文。我使用了以下代码:

import tweepy

CONSUMER_KEY ="XXXX"
CONSUMER_SECRET = "XXXX"   
ACCESS_KEY = "XXXX"    
ACCESS_SECRET = "XXXX"

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

api = tweepy.API(auth)
api.update_status('Updating using OAuth authentication via Tweepy!')

但是当我运行应用程序时,我收到了这个错误:

raise TweepError(error_msg, resp)
TweepError: Read-only application cannot POST.

我该如何修复这个问题?

4个回答

16
在应用设置中,将您的应用程序类型设置为“读写”。然后重新协商您的访问令牌。

重新协商访问令牌是什么意思?如果在获取原始令牌时应用程序只读,那么是否需要新的访问令牌? - TedCap
我刚刚自己解决了这一部分。在更改应用程序类型后,您必须选择“重新生成我的访问令牌和令牌密钥”,以便与您的应用程序关联的帐户。正如@TedCap所说,您将获得新的令牌,反映了相关帐户权限的更改。 - Shon

3

这段代码对我来说只需要这样就可以正常工作

api.update_status (**status** = 'Updating using OAuth authentication via Tweepy!')

2
实际上这就是答案,只不过略有不同的问题,它帮助了我,所以我想评论一下。 当我使用Tweepy调用时,从Twitter返回了一个状态响应'400':api.update_status('通过Tweepy使用OAuth身份验证进行更新!')但是我可以通过更改方法参数来解决这个问题:api.update_status(status = '通过Tweepy使用OAuth身份验证进行更新!')Tweepy文档似乎对这种细微差别不太清楚。 - Adam Christianson

0

下面的Python脚本将会发送一行来自文本文件的Twitter信息。如果你想要发送多个Twitter信息,请将它们放在新的一行上,并用一个空行隔开。

import tweepy
from time import sleep
# import keys from cregorg.py
from credorg import *

client = tweepy.Client(bearer_token, consumer_key, consumer_secret, access_token, access_token_secret)

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth, wait_on_rate_limit=True)

print("Tweet-TXT-Bot v1.0 by deusopus (deusopus@gmail.com)")

# Open text file tweets.txt (or your chosen file) for reading
my_file = open('tweets.txt', 'r')

# Read lines one by one from my_file and assign to file_lines variable
file_lines = my_file.readlines()

# Close file
my_file.close()

# Tweet a line every 5 minutes
def tweet():
    for line in file_lines:
        try:
             print(line)
             if line != '\n':
                 api.update_status(line)
                 sleep(300)
             else:
                pass
        except tweepy.errors.TweepyException as e:
            print(e)

while True:

    tweet()

虽然你的示例代码有很好的注释,可能会帮助其他人,但它并没有回答或解释由于 Twitter 帐户引起的 Tweepy 或 Twitter-API 引发的“只读应用程序无法发布”的问题。 - hc_dev
1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - hc_dev

0

你需要设置你的应用程序进行读写操作 在此输入图片描述

之后,你就可以运行你的代码了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接