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

购买X Basic订阅仍遇Twitter API 403错误,求技术排查

解决X Basic套餐下Twitter API 403 Forbidden 453错误

核心问题分析

你的代码依赖Twitter API v1.1(tweepy.API),但X Basic套餐对v1.1的部分旧端点已做限制,尤其是search/tweets这类接口,即使付费也无法访问。X当前主推API V2,大部分功能需迁移到V2接口实现。

解决步骤

1. 确认开发者平台权限配置

  • 登录X Developer Portal,进入你的项目,确认已绑定X Basic套餐。
  • 检查项目权限设置,确保启用了至少Read权限(针对V2接口)。
  • 验证凭证(Consumer Key/Secret、Access Token/Secret、Bearer Token)属于该绑定套餐的项目。

2. 迁移代码到Twitter API V2

替换原有的v1.1调用为Tweepy的V2客户端(tweepy.Client),以下是关键部分修改:

初始化V2客户端

import tweepy
import threading
import time
import re
from telegram import Update, ChatPermissions
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler, CallbackContext
import logging

# Twitter API V2 credentials
BEARER_TOKEN = '你的Bearer Token'
CONSUMER_KEY = 'API'
CONSUMER_SECRET = 'API'
ACCESS_TOKEN = 'API'
ACCESS_TOKEN_SECRET = 'API'

# 初始化V2客户端
twitter_client = tweepy.Client(
    bearer_token=BEARER_TOKEN,
    consumer_key=CONSUMER_KEY,
    consumer_secret=CONSUMER_SECRET,
    access_token=ACCESS_TOKEN,
    access_token_secret=ACCESS_TOKEN_SECRET
)

# 其余日志、Telegram Token等配置保留原代码

获取推文点赞、转发数据(替代get_tweet_metrics)

def get_tweet_metrics(tweet_id):
    try:
        # 通过V2端点获取推文公共指标
        tweet = twitter_client.get_tweet(
            tweet_id,
            tweet_fields=['public_metrics']
        )
        if tweet.data:
            retweets = tweet.data.public_metrics['retweet_count']
            likes = tweet.data.public_metrics['like_count']
            return retweets, likes
        return 0, 0
    except Exception as e:
        logger.error(f"获取推文数据失败: {e}")
        return 0, 0

获取回复数(替代get_replies_count)

def get_replies_count(tweet_id):
    replies_count = 0
    try:
        # 使用V2的`tweet_replies`端点直接获取所有回复
        for page in tweepy.Paginator(
            twitter_client.get_tweet_replies,
            tweet_id,
            max_results=100
        ):
            if page.data:
                replies_count += len(page.data)
    except Exception as e:
        logger.error(f"获取回复数失败: {e}")
    return replies_count

3. 调整关联代码

  • 修改monitor_twitter_post中的get_replies_count调用,移除twitter_api参数。
  • 删除所有原v1.1相关的调用(如twitter_api.get_status),确保逻辑完全基于V2接口。

额外注意事项

  • X Basic套餐有明确的API速率限制,V2端点的限制规则比v1.1更清晰,建议在代码中添加间隔等待(如原代码的time.sleep(3600))避免触发限制。
  • 若仍遇权限问题,可在X Developer Portal的"Projects & Apps"中检查具体端点权限,或联系X支持确认套餐权限范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:35:08