You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tweepy获取个人推文遇453/403错误,是否需付费API权限?

问题:使用Tweepy获取自身推文是否需要付费API权限?

我正在编写Python脚本,使用Tweepy获取自己的推文,尝试了两个版本的代码分别触发453和403错误,具体信息如下。我拥有Twitter API的免费访问权限,且已创建关联项目的应用(截图:Twitter开发者平台项目应用截图),请问实现该功能是否需要付费访问权限?

第一个报错版本代码

import tweepy
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_SECRET = ''

authenticator = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
authenticator.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

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

query = 'from:my_screen_name -is:retweet'

tweet_cursor = tweepy.Cursor(api.search_tweets, q= query, lang="en",
tweet_mode="extended").items(100)

tweets = [tweet.full_text for tweet in tweet_cursor]
print(tweets)

错误信息

453 - 你当前仅能访问部分Twitter API v2端点和有限的v1.1端点(如media post、oauth)。若需访问此端点,可能需要更高的权限级别。

第二个报错版本代码

client = tweepy.Client(
    consumer_key=CONSUMER_KEY,
    consumer_secret=CONSUMER_SECRET,
    access_token=ACCESS_TOKEN,
    access_token_secret=ACCESS_SECRET,
    bearer_token=BEARER_TOKEN
)
query = 'from:my_screen_name -is:retweet'

tweets = client.search_recent_tweets(query=query, tweet_fields=['context_annotations', 'created_at'], max_results=100)

for tweet in tweets.data:
    print(tweet.text)

错误信息

向Twitter API v2端点发起请求进行身份验证时,必须使用关联到项目的Twitter开发者应用的密钥和令牌。你可以通过开发者门户创建项目。


解答

不需要付费权限,免费版API完全能实现获取自身推文的功能,问题出在代码的端点选择和认证配置上:

  1. 第一个代码的问题:api.search_tweets调用的是Twitter API v1.1的搜索接口,而免费权限已经不再开放这个接口的访问,所以触发453错误。免费版必须使用API v2的接口。

  2. 第二个代码的问题:错误提示认证不通过,尽管你提到应用已关联项目,但大概率是这几个原因:

    • BEARER_TOKEN填写错误,或者没有从关联项目的应用中正确获取;
    • 应用和项目的关联没做好,去开发者平台确认应用是否在项目的“已关联应用”列表里;
    • 应用权限没开对,要确保开启了“读取推文”的基础权限。

可用的免费版代码示例

import tweepy

# 替换为你的Bearer Token(从开发者平台项目应用中获取)
BEARER_TOKEN = 'your_bearer_token_here'

# 仅用Bearer Token初始化Client,避免认证冲突
client = tweepy.Client(bearer_token=BEARER_TOKEN)

# 替换为你的Twitter用户名(不带@)
query = 'from:your_screen_name -is:retweet'

# 免费版search_recent_tweets只能获取最近7天的推文,单次请求最多100条
response = client.search_recent_tweets(query=query, max_results=100, tweet_fields=['created_at'])

if response.data:
    for tweet in response.data:
        print(f"{tweet.created_at}: {tweet.text}")
else:
    print("没有找到符合条件的推文")

注意:如果需要获取超过7天的历史推文,免费版确实做不到,得升级付费层级;但仅获取自身最近7天的推文,免费权限足够用。


内容的提问来源于stack exchange,提问作者simplfuzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:05:20