使用三方(3-legged)OAuth 流程获取访问令牌
- 使用 GET oauth/authorize 端点,而不是 GET oauth/authenticate。
- 即使此前已授予访问权限,系统也会始终提示用户授权你的应用。
流程概览
- 为消费者应用创建获取请求令牌的请求。
- 让用户完成身份验证,并将请求令牌发送给消费者应用。
- 将请求令牌转换为可用的用户访问令牌。
- App Key === API Key === Consumer API Key === Consumer Key === Customer Key ===
oauth_consumer_key - App Key Secret === API Secret Key === 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
将请求令牌转换为可用的访问令牌。
要将请求令牌转换为可用的访问令牌,你的应用必须向 POST oauth/access_token 端点发起请求,其中包含在步骤 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,或访问原始链接 POST statuses/update。
请求包含:
POST statuses/update.json
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
示例用例


