【发布时间】:2020-06-20 15:35:03
【问题描述】:
我正在尝试设置为使用 Twitter API(仅限应用程序身份验证),但在获取不记名令牌时遇到了问题,因此我可以开始拨打电话。具体来说,我得到的是 HTTP 403
{
"code": 99,
"message": "Unable to verify your credentials",
"label": "authenticity_token_error"
}
我已设置应用程序和开发环境并拥有我的凭据(API 密钥和 API 密钥)。
我正在使用 Talend API Tester 来完成所有这些工作。
我只是没有看到问题所在。这是来自 Twitter 文档的示例请求,下面是我的请求,直接来自浏览器。
推特示例:
POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip
grant_type=client_credentials
我的实际要求:
POST /oauth2/token HTTP/1.1
Authorization: Basic ektCUTl5Q0tWRERVUVFwUDJXYzljWlpyYTowM1ZIb -- not really a key -- xhaHByMmlqWld3RkIxa1gxaXZ6cQ==
User-Agent: My App
Accept-Encoding: gzip
Content-Length: 29
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Host: api.twitter.com
grant_type=client_credentials
在 Authorization 和 User-Agent 标头之外,它们是相同的。
因为 Talend API Tester 获取用户名和密码并对 Authorization 标头进行 Base 64 编码,所以我什至获取了 API 密钥,将其与 API 密钥放在一起,并用冒号分隔它们(根据 Twitter 文档) 并手动进行 Base 64 编码并获得与请求中发送的相同值。
我确实读过,如果您提出太多请求,您可以获得 403,基本上是让您超时,但上面的请求只是在我上次尝试后 24 小时后使用新密钥提出的。如果我超时,我不确定它会持续多久。
【问题讨论】: