如何使用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
相关产品推荐
相关产品推荐

