使用三方 OAuth 授权流程获取 Access Tokens
- 使用 GET oauth/authorize endpoint,而不是 GET oauth/authenticate。
- 即使之前已授予访问权限,用户也将始终被提示授权您的应用。

流程概览
- 为使用方应用创建获取请求令牌(request token)的请求。
- 让用户完成身份验证,并将请求令牌发送给使用方应用。
- 将请求令牌转换为可用的用户 access token。
- App Key === API Key === Consumer API Key === Consumer Key === Customer Key ===
oauth_consumer_key
- App Key Secret === API Secret Key(API 密钥私钥) === Consumer Secret === Consumer Key === Customer Key ===
oauth_consumer_secret
- Callback URL ===
oauth_callback
- Request Token ===
oauth_token
- Request Token Secret ===
oauth_token_secret
- oauth_verifier
- Access token === Token === 对应的
oauth_token
- Access token secret === Token Secret === 对应的
oauth_token_secret
演练步骤
oauth_callback="https%3A%2F%2FyourCallbackUrl.com"
oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"
你的应用应检查响应的 HTTP 状态码。任何不等于 200 的值都表示失败。响应正文将包含 oauth_token
、oauth_token_secret
和 oauth_callback_confirmed
参数。你的应用应验证 oauth_callback_confirmed
为 true,并将另外两个值存储用于后续步骤。
响应包含
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI
oauth_callback_confirmed=true
步骤 2: GET oauth/authorize
让用户完成身份验证,并向消费者应用发送请求令牌。
用于重定向用户的示例 URL:
https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
成功完成身份验证后,你的 callback_url
将收到一个包含 oauth_token
和 oauth_verifier
参数的请求。你的应用应验证该令牌与步骤 1 中收到的请求令牌一致。
来自客户端重定向的请求:
https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
步骤 3: POST oauth/access_token
将请求令牌转换为可用的 access token。
要将请求令牌转换为可用的 access token,你的应用必须向 POST oauth/access_token endpoint 发起请求,其中包含步骤 2 获得的 oauth_verifier
值。请求令牌也会通过请求头中的 oauth_token
传递,但这将由签名流程添加。
请求包含:
POST /oauth/access_token
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
成功的响应包含 oauth_token
、oauth_token_secret
参数。令牌和令牌密钥应被存储,并用于将来对 X API 的已认证请求。要确定用户身份,请使用 GET account/verify_credentials。
响应包含:
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo
将这些凭证用于 OAuth 1.0a(应用-用户)所需的请求
现在你已经获取了用户访问令牌;可以使用它们访问某些 API,例如通过 POST statuses/update 代表用户创建 Tweet。
请求 includes:
POST statuses/update.json
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
示例用例


