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

调用Twitter API oauth/request_token返回页面不存在错误code34如何解决

问题原因

  • 报错code 34的本质是请求的API端点不存在:你使用的twitter包的post方法默认会为相对路径自动拼接/1.1/前缀,而oauth/request_token是OAuth专属端点,不属于v1.1版本的API路径,最终请求的地址错误导致404。
  • 初始化客户端时传入了个人的access_token相关参数,不符合三方授权流程的要求:OAuth第一步获取请求令牌仅需要应用的consumer_key和consumer_secret,不需要提前传入access_token,该参数是用户授权完成后才能拿到的用户专属凭证。

修复方案

代码修正

var Twitter = require('twitter');

// 初始化仅传入应用消费密钥,不要传个人access token参数
const client = new Twitter({
    consumer_key: process.env.TWITTER_CONSUMER_KEY,
    consumer_secret: process.env.TWITTER_CONSUMER_SECRET
});

// 直接传入request_token端点的完整地址,避免包自动拼接错误前缀
client.post('https://api.twitter.com/oauth/request_token', {oauth_callback: process.env.CALLBACKURL})
    .then(response => {
        console.debug('got twitter token', response);
        res.redirect('https://api.twitter.com/oauth/authenticate?oauth_token=' + response.oauth_token)
    })
    .catch(function(err) {
        console.error('failed to authenticate twitter', err, res.locals.host);
        console.log(err);
    });

后续流程注意事项

  • 用户跳转授权后,回调地址会返回oauth_token和oauth_verifier参数,携带这两个参数请求https://api.twitter.com/oauth/access_token端点,即可拿到对应用户的access_token_key和access_token_secret。
  • 存储用户的access_token凭证后,重新初始化客户端并传入该用户的凭证,调用statuses/update端点即可实现代用户发推。
  • 提前在Twitter开发者后台将你使用的回调地址添加到应用的白名单中,否则会出现回调地址不匹配的报错。
  • 该twitter包长期未维护,若后续需要使用Twitter v2版本API,建议替换为更活跃的twitter-api-v2包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:03