App only 身份验证与 OAuth 2.0 Bearer Token
- 拉取用户时间线
- 访问任意账户的好友与关注者
- 访问 List 资源
- 搜索 Tweets
- 发布 Tweets 或其他资源
- 搜索用户
- 使用任何地理相关 endpoint
- 访问私信或账户凭据
- 获取用户的电子邮件地址
认证流程
- 应用将其 consumer key 和 secret 编码为一组特殊编码的凭据。
- 应用向 POST oauth2/token endpoint 发起请求,以用这些凭据交换获取 App only Access Token。
- 访问 REST API 时,应用使用 App only Access Token 进行认证。

关于仅应用程序身份验证
发起仅限应用的请求
- 按照 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 |
Base64 编码后的 Bearer Token 凭据 | :: 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
键对应的值是 App only Access Token(OAuth 2.0 Bearer Token)。
请注意,任一时刻每个应用仅有一个 App only Access Token 有效。使用相同凭据向 /oauth2/token
再次发起请求会返回同一个令牌,直到该令牌被作废。
步骤 3:使用 App only Access Token(OAuth 2.0 Bearer Token)对 API 请求进行认证
App only Access Token(OAuth 2.0 Bearer Token)可用于向支持仅应用认证的 API endpoint 发起请求。要使用 App Access Token,构造一个常规的 HTTPS 请求,并在 Authorization
头中包含如下内容:Bearer <base64 bearer token value from step 2>. Signing is not required.
示例请求(Authorization 头已换行显示):
常见错误情况
- 使用无效请求获取 App only Access Token (Bearer Token)(例如,省略
grant_type=client_credentials
)。 - 使用不正确或已过期的 App 凭据获取或撤销 App only Access Token (Bearer Token)。
- 使不正确或已撤销的 App only Access Token (Bearer Token) 失效。
- 在短时间内过于频繁地获取 App only Access Token (Bearer Token)。
API 请求包含无效的 App only Access Token(Bearer Token)
在不支持 App only 身份验证的 endpoint 上使用 App only Access Token(Bearer Token)
statuses/home_timeline
)使用 App only Access Token(Bearer Token)将会导致: