如何使用Twitter API代持有的其他账号发布推文?
用自有开发者应用代其他账号发推文的实操方案
一、先搞定正确的OAuth授权链接(避免报错)
Twitter现在强制要求用OAuth 2.0授权码流程+PKCE,别用旧的OAuth 1.0a,容易踩坑。正确的授权链接参数必须包含:
client_id:你的开发者应用里的Client ID(不是API Key,别搞混)redirect_uri:必须是你在开发者后台已经验证并添加的回调地址(本地测试推荐用http://localhost:3000/callback)response_type=code:固定值scope=tweet.write offline.access:tweet.write是发推文的核心权限,offline.access用来获取刷新令牌,避免每次都要重新授权code_challenge:先生成32位随机字符串,用SHA-256哈希后转成Base64 URL编码(别直接用原始字符串)code_challenge_method=S256:固定值,对应上面的哈希方式
常见错误:redirect_uri没在后台配置、用API Key代替Client ID、漏加
offline.access权限,都会导致授权链接报错。
二、用授权码换取访问令牌
当你用目标账号(要代发的那个)点击授权链接、同意权限后,会跳转到你设置的redirect_uri,URL里的code参数就是授权码。接下来用POST请求调用令牌接口,参数用application/x-www-form-urlencoded格式:
client_id:同上code:刚拿到的授权码redirect_uri:和授权链接里的完全一致grant_type=authorization_code:固定值code_verifier:生成code_challenge时用的原始随机字符串(不是哈希后的)
成功后会返回:access_token(当前可用的访问令牌)、refresh_token(用来刷新过期的access_token)、expires_in(令牌有效期约2小时)。
三、代发推文的API授权方式
调用发推文的API(POST /2/tweets)时,直接在请求头里加授权信息:
Authorization: Bearer {你的access_token}
请求体用JSON格式,示例:
{"text": "这是通过API代发的测试推文"}
如果access_token过期,用refresh_token调用令牌接口(把grant_type换成refresh_token),就能拿到新的access_token,不用再让目标账号重新授权。
四、针对自有账号的简化提示
因为两个账号都是你自己的,授权时直接用目标账号登录同意就行,不用走第三方用户授权的复杂流程。另外要确保开发者后台的应用已经开启tweet.write权限(在「Permissions and features」里申请,自有账号一般秒通过)。
内容的提问来源于stack exchange,提问作者rulebreaker99
相关产品推荐
相关产品推荐

