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

使用PIN式OAuth调用Twitter REST API home_timeline接口报220错误求助

解决Twitter API Error 220: 凭证无权访问资源的问题

看到你遇到了error: Your credential not allow to access this resource; error code :220的问题,虽然已经设置了应用读写权限并通过PIN式流程获取了令牌,这个错误还是挺常见的,咱们一步步排查:

1. 先确认访问令牌的实际权限范围

你说应用设置了读写权限,但令牌本身的权限可能和应用设置不匹配——比如用户授权时,应用的权限还没更新,或者PIN流程中没有正确请求到读取权限。

你可以调用account/verify_credentials.json接口来验证令牌的权限:

# 示例Python代码(根据你的实际开发语言调整)
import requests
from requests_oauthlib import OAuth1

auth = OAuth1(
    'YOUR_CONSUMER_KEY',
    'YOUR_CONSUMER_SECRET',
    'YOUR_ACCESS_TOKEN',
    'YOUR_ACCESS_TOKEN_SECRET'
)

response = requests.get('https://api.twitter.com/1.1/account/verify_credentials.json', auth=auth)
print(response.json().get('scope'))

如果返回的scope里没有read,说明令牌没有读取时间线的权限,需要重新走PIN授权流程,确保用户授权时应用的读写权限已经生效。

2. 检查OAuth签名是否正确

PIN式流程的签名很容易踩坑,这是错误220的高发原因:

  • 确保所有OAuth参数(oauth_consumer_key、oauth_token、oauth_signature_method等)按字母顺序排序后再参与签名生成
  • 所有参数值和URL都要做正确的URL编码(比如空格转%20,特殊字符转对应编码)
  • 签名方法必须是HMAC-SHA1(Twitter v1.1默认要求)

你可以用Postman等工具手动构造请求,对比你代码生成的签名是否一致,排除代码里的签名逻辑错误。

3. 确认应用的回调设置是否正确

PIN式授权要求应用的回调地址设置为oob("out of band"),如果你的应用后台回调地址填了其他值,会导致授权流程生成的令牌权限异常。去Twitter开发者后台的应用设置里,检查Callback URI / Redirect URL是否设为oob。

4. 重新生成访问令牌试试

有时候令牌生成过程中会出现隐性错误,比如请求令牌和访问令牌的配对出错。建议你重新走一遍完整的PIN授权流程:

  1. 获取请求令牌(确保回调是oob)
  2. 引导用户访问授权URL,获取PIN码
  3. 用PIN码交换访问令牌
  4. 用新生成的令牌测试home_timeline接口

5. 检查开发者账号和应用状态

如果以上都没问题,去Twitter开发者后台看看:

  • 应用是否处于"激活"状态,有没有被限制访问API
  • 你的开发者账号是否通过了基础审核(新账号可能需要完成一些验证步骤才能访问全部接口)

先从权限验证和签名检查这两点入手,这是解决错误220最有效的方向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:14