无法访问Twitter API 1.1 collections/show接口,返回403/220错误
解决Twitter API
/1.1/collections/show.json 访问权限问题 我来帮你梳理下这个问题的核心原因和解决办法,毕竟你已经确认Token在其他接口能用,这个问题肯定是接口本身的权限限制导致的:
为什么会触发错误码220?
错误码220对应的就是「凭证无权访问该资源」,而这里的关键是:Twitter的/collections/show.json接口不支持App-only认证的Bearer Token。
你能正常访问的/search/tweets.json、/statuses/user_timeline.json(你写的/statuses/user_timeline/show.json应该是笔误,正确路径是/statuses/user_timeline.json)、/statuses/show.json和/users/show.json这些接口,都是允许App-only Token调用的,但Collections相关接口是个例外——它要求必须使用带有用户上下文的认证方式,也就是OAuth 1.0a的用户授权Token,或者OAuth 2.0的用户级Token(不是App-only的Bearer Token)。
具体解决步骤
- 切换认证方式:把当前的App-only Bearer Token替换成用户级的认证凭证。你需要走OAuth 1.0a的用户授权流程,让用户授权你的App访问其数据,或者生成OAuth 2.0的用户Token(带用户上下文的那种)。
- 检查App权限:登录Twitter开发者后台,在你的App的「Permissions and features」页面,确认已经申请了
read类的权限(Collections属于用户内容读取范畴),并且用户授权时同意了这些权限。 - 重新测试请求:用新的用户级Token调用
/1.1/collections/show.json?id=576828964162965504,应该就能正常返回数据了。
额外小提示
如果你的项目有迁移空间,也可以考虑转到Twitter API v2版本,它的权限模型更清晰,对应的集合内容接口是/2/timelines/:id,而且支持的认证方式更灵活,能避免这类v1.1的权限坑。
内容的提问来源于stack exchange,提问作者Tom Ladek
相关产品推荐
相关产品推荐

