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

如何使用OAuth 2.0 Client ID和Client Secret通过Python发送推文?

解决Twitter API发推的OAuth2.0认证问题

你遇到的403错误核心原因:user_auth=False启用的是OAuth2.0应用级认证,而Twitter的create_tweet接口仅支持用户上下文认证(OAuth1.0a用户上下文或OAuth2.0用户上下文),应用级认证没有发推权限。

结合你已有的Client ID、Client Secret和回调URL,以下是完整的解决步骤:

步骤1:获取OAuth2.0用户上下文Access Token

因为发推需要用户级权限,得先通过授权流程获取用户专属的access token:

import tweepy

# 替换为你的实际凭证
client_id = "你的Client ID"
client_secret = "你的Client Secret"
redirect_uri = "http://localhost"

# 初始化OAuth2授权处理器
oauth2_handler = tweepy.OAuth2UserHandler(
    client_id=client_id,
    redirect_uri=redirect_uri,
    scope=["tweet.read", "tweet.write", "users.read"],
    client_secret=client_secret
)

# 生成授权链接,复制到浏览器打开
print("授权链接:", oauth2_handler.get_authorization_url())

# 粘贴授权后的回调URL(浏览器地址栏完整内容)
auth_response = input("请输入授权后的回调URL:")

# 获取用户级access token
access_token = oauth2_handler.fetch_token(auth_response)["access_token"]

运行后按提示操作:打开输出的授权链接→用Twitter账号登录授权→复制跳转后的http://localhost完整URL→粘贴到控制台,即可拿到用户级access_token。

步骤2:用OAuth2.0用户上下文发推文

使用获取到的access_token,配合Client ID/Secret完成认证并发推:

import tweepy

# 替换为你的凭证和刚获取的access_token
client_id = "你的Client ID"
client_secret = "你的Client Secret"
access_token = "步骤1获取的用户级access_token"

# 初始化客户端
client = tweepy.Client(
    access_token=access_token,
    client_id=client_id,
    client_secret=client_secret
)

# 发送推文
response = client.create_tweet(text="这是OAuth2.0用户上下文的测试推文")
print(f"推文发布成功,ID:{response.data['id']}")

备选方案:用OAuth1.0a用户上下文发推

如果你之前已经有OAuth1.0a的凭证(consumer_key、consumer_secret、access_token、access_token_secret),只需去掉user_auth=False参数即可:

import tweepy

client = tweepy.Client(
    consumer_key="你的consumer_key",
    consumer_secret="你的consumer_secret",
    access_token="你的access_token",
    access_token_secret="你的access_token_secret"
)

response = client.create_tweet(text="test")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:02:52