Obtendo access tokens usando o fluxo 3-legged OAuth
Para realizar ações em nome de outro usuário, você precisará obter os access tokens dele. Access tokens especificam a conta do X em nome da qual a solicitação é feita, então, para obtê-los, o usuário precisará conceder acesso a você primeiro. Esses tokens não expiram, mas podem ser revogados pelo usuário a qualquer momento. O X permite que você obtenha access tokens de usuário por meio do fluxo 3-legged OAuth, que permite que sua aplicação obtenha um access token e um access token secret redirecionando um usuário para o X para que ele autorize sua aplicação. Este fluxo é quase idêntico ao descrito em implementando o Log in with X, com duas exceções:- O endpoint GET oauth/authorize é usado no lugar de GET oauth/authenticate.
- O usuário sempre será solicitado a autorizar o acesso à sua aplicação, mesmo que o acesso já tenha sido concedido anteriormente.
Visão geral do processo
Em alto nível, o processo 3-Legged OAuth irá:- Criar uma solicitação para uma consumer application obter um request token.
- Fazer com que o usuário se autentique e enviar à consumer application um request token.
- Converter o request token em um user access token utilizável.
- 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_tokenresultante - Access token secret === Token Secret ===
oauth_token_secretresultante
Passos do fluxo
Passo 1: POST oauth/request_token Cria uma solicitação para uma consumer application obter um request token. O único parâmetro exclusivo desta solicitação é oauth_callback, que deve ser uma versão URL encoded da URL para a qual você deseja que o usuário seja redirecionado ao concluir o passo 2. Os demais parâmetros são adicionados pelo processo de assinatura OAuth. Observação — qualquer callback URL usada com o endpoint POST oauth/request_token precisará ser configurada nas configurações do seu developer App na página de detalhes do app no Developer Console. A solicitação inclui:oauth_callback="https%3A%2F%2FyourCallbackUrl.com"
oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"
Seu app deve examinar o HTTP status da resposta. Qualquer valor diferente de 200 indica falha. O body da resposta conterá os parâmetros oauth_token, oauth_token_secret e oauth_callback_confirmed. Seu app deve verificar se oauth_callback_confirmed é true e armazenar os outros dois valores para os próximos passos.
A resposta inclui
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI
oauth_callback_confirmed=true
Passo 2: GET oauth/authorize
Faça o usuário se autenticar e envie à consumer application um request token.
Exemplo de URL para redirecionar o usuário:
https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
Após autenticação bem-sucedida, seu callback_url receberia uma solicitação contendo os parâmetros oauth_token e oauth_verifier. Sua aplicação deve verificar se o token corresponde ao request token recebido no passo 1.
Solicitação vinda do redirect do cliente:
https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
Passo 3: POST oauth/access_token
Converta o request token em um access token utilizável.
Para transformar o request token em um access token utilizável, sua aplicação deve fazer uma solicitação ao endpoint POST oauth/access_token, contendo o valor de oauth_verifier obtido no passo 2. O request token também é passado na parte oauth_token do header, mas isso terá sido adicionado pelo processo de assinatura.
A solicitação inclui:
POST /oauth/access_token
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
Uma resposta bem-sucedida contém os parâmetros oauth_token e oauth_token_secret. O token e o token secret devem ser armazenados e usados em futuras solicitações autenticadas à X API. Para determinar a identidade do usuário, use GET account/verify_credentials.
A resposta inclui:
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo
Usando essas credenciais em solicitações que exigem OAuth 1.0a (application-user)
Agora que você obteve os user access tokens, pode usá-los para acessar certas APIs, como POST statuses/update, para criar Tweets em nome dos usuários.
A solicitação inclui:
POST statuses/update.json
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
Exemplo de caso de uso
O fluxo padrão é baseado em web e utiliza o fluxo de autorização 3-legged OAuth. Os screenshots aqui apresentados fazem parte de um exemplo cujo código-fonte você pode visualizar em https://github.com/xdevplatform/twauth-web. Em algum momento na sua aplicação, você vai querer redirecionar para o X para autorizar sua aplicação.

