仅应用认证与 OAuth 2.0 Bearer Token
- 拉取用户时间线
- 访问任意账号的关注与粉丝
- 访问列表资源
- 搜索 Tweets
- 发布 Tweets 或其他资源
- 搜索用户
- 使用任意地理位置相关的 endpoint
- 访问私信或账号凭据
- 获取用户的电子邮件地址
认证流程
- 应用将其 consumer key 和 secret 编码为一组特殊编码的凭据。
- 应用向 POST oauth2/token 端点发起请求,用这些凭据换取仅 App 访问令牌。
- 在访问 REST API 时,应用使用仅 App 访问令牌进行认证。

关于仅应用认证
发出仅限应用的请求
- 按照 RFC 1738 对 consumer key 和 consumer secret 进行 URL 编码。请注意,以本文撰写时为准,这实际上不会改变 consumer key 和 secret,但仍应执行此步骤,以防将来这些值的格式发生变化。
- 将编码后的 consumer key、一个冒号字符“:”,以及编码后的 consumer secret 拼接为单个字符串。
- 对上一步得到的字符串进行 Base64 编码。
| Consumer key | xvz1evFS4wEEPTGEFPHBog |
| Consumer secret | L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg |
| 按 RFC 1738 编码的 consumer key(无变化) | xvz1evFS4wEEPTGEFPHBog |
| 按 RFC 1738 编码的 consumer secret(无变化) | L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg |
| Bearer Token 凭证 | xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg |
| 以上 Bearer Token 凭证的 Base64 编码 | :: eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw== |
- 请求必须为 HTTP POST。
- 请求必须包含
Authorization头,值为Basic <base64 encoded value from step 1>. - 请求必须包含
Content-Type头,值为application/x-www-form-urlencoded;charset=UTF-8. - 请求正文必须为
grant_type=client_credentials。
token_type 键对应的值是否为 bearer。access_token 键对应的值是仅限应用的访问令牌(Bearer Token)。
请注意,同一时间每个应用仅有一个仅限应用的访问令牌有效。使用相同凭据再次向 /oauth2/token 发起请求将返回相同的令牌,直到该令牌被作废。
步骤 3:使用仅限应用的访问令牌(Bearer Token)对 API 请求进行身份验证
仅限应用的访问令牌(Bearer Token)可用于向支持仅应用身份验证的 API 端点发起请求。要使用应用访问令牌,构造常规的 HTTPS 请求,并包含一个 Authorization 头,其值为 Bearer <base64 bearer token value from step 2>. Signing is not required.
示例请求(Authorization 头已换行显示):
常见错误情况
- 以无效请求获取仅应用访问令牌(Bearer Token)(例如,省略
grant_type=client_credentials)。 - 使用不正确或已过期的应用凭据获取或撤销仅应用访问令牌(Bearer Token)。
- 使不正确或已被撤销的仅应用访问令牌(Bearer Token)失效。
- 在短时间内过于频繁地获取仅应用访问令牌(Bearer Token)。
API 请求包含无效的仅限应用访问令牌(Bearer Token)
在不支持仅 App 身份验证的端点上使用仅 App 访问令牌(Bearer Token)
statuses/home_timeline)将会产生: