Node.js调用Twitter statuses/show/:id接口报错code:34求助
我之前也碰到过一模一样的问题,来帮你梳理几个常见的排查方向和解决办法:
先确认目标推文是否真的存在
错误码34最常见的原因就是你请求的推文ID对应的内容已经不存在了——可能是原推文被删除、发布者账号被暂停,或者推文设置为私有(而你的应用没有访问私有内容的权限)。你可以直接在浏览器里访问https://twitter.com/i/web/status/759043035355312128,如果页面提示"Sorry, that page doesn’t exist",那问题就出在推文本身,和你的代码无关。检查API调用的路径写法
虽然你用的T.get('statuses/show/:id', { id: 'xxx' })看起来符合twit库的标准写法,但偶尔会出现库路径解析的小问题。你可以尝试把路径里的:id去掉,改成:T.get('statuses/show', { id: '759043035355312128' }, function(err, data, response) { console.log(err); console.log(data); });有些版本的twit库对带参数的路径解析会有兼容问题,去掉
:id直接传参数反而能正常工作。验证你的API权限与认证信息
虽然错误码34不直接指向权限问题,但如果你的应用认证信息(consumer key、consumer secret、access token、access token secret)有误,或者账号没有读取公开推文的权限,也可能返回这种误导性的错误。建议重新核对你的开发者后台里的认证信息,确保应用的权限范围包含"Read"权限。用已知有效的推文ID做测试
找一条确定存在的公开推文ID替换进去测试,比如Twitter官方账号的这条推文ID1627664884301271040,如果调用成功,那就能确定问题出在你原来的推文ID上,而不是代码或配置。
内容的提问来源于stack exchange,提问作者Connor D

