Pular para o conteúdo principal

Obtaining Access Tokens using 3-legged OAuth flow

Para executar ações em nome de outro usuário, você precisará obter os respectivos access tokens. Os access tokens especificam a conta da X em nome da qual a solicitação é feita; portanto, para obtê-los, o usuário precisará primeiro conceder acesso a você. Esses tokens não expiram, mas podem ser revogados pelo usuário a qualquer momento. A X permite obter access tokens de usuário por meio do fluxo OAuth de 3 etapas, que possibilita à sua App obter um access token e o segredo do access token ao redirecionar um usuário para a X e fazer com que ele autorize sua aplicação. Esse fluxo é quase idêntico ao descrito em implementing Log in with X, com duas exceções:
  • O endpoint GET oauth/authorize é usado em vez 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.  
Antes de começar, você precisará verificar as permissões da sua App e conhecer as consumer keys e a callback URL. Se você não tiver uma callback URL ou uma interface pública acessível, considere usar a PIN-based authorization, destinada a aplicações que não podem acessar ou incorporar um navegador da web para redirecionar o usuário após a autorização.  Os possíveis estados da interação de login com 3 etapas estão ilustrados no fluxograma a seguir:

Visão geral do processo

Em linhas gerais, o processo OAuth de 3 etapas (3‑Legged OAuth) fará o seguinte:
  1. Criar uma solicitação para que um aplicativo consumidor obtenha um token de solicitação.
  2. Fazer com que o usuário se autentique e enviar ao aplicativo consumidor um token de solicitação.
  3. Converter o token de solicitação em um access token de usuário utilizável.
Esclarecimento de terminologia No guia abaixo, você poderá ver termos diferentes se referindo à mesma coisa. Credenciais do cliente:
  • 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  
Credenciais temporárias:
  • Request Token === oauth_token
  • Request Token Secret === oauth_token_secret
  • oauth_verifier  
Credenciais de token:
  • Access Token === Token === resulting oauth_token
  • Access Token Secret === Token Secret === resulting oauth_token_secret

Etapas do guia

Etapa 1: POST oauth/request_token Crie uma solicitação para que um aplicativo consumidor obtenha um token de solicitação. O único parâmetro específico nesta solicitação é oauth_callback, que deve ser a versão codificada em URL do URL para o qual você deseja que o usuário seja redirecionado ao concluir a etapa 2. Os demais parâmetros são adicionados pelo processo de assinatura do OAuth. Observação: qualquer URL de callback usada com o endpoint POST oauth/request_token precisará ser configurada nas configurações da sua App de desenvolvedor na página de detalhes do app no portal do desenvolvedor.   A solicitação inclui: oauth_callback="https%3A%2F%2FyourCallbackUrl.com" oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"  Seu app deve verificar o status HTTP da resposta. Qualquer valor diferente de 200 indica falha. O corpo 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 as próximas etapas.   A resposta inclui oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI oauth_callback_confirmed=true Etapa 2: GET oauth/authorize Faça com que o usuário se autentique e envie ao aplicativo consumidor um token de solicitação.   URL de exemplo para redirecionar o usuário: https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 Após a autenticação bem-sucedida, seu callback_url receberá uma solicitação contendo os parâmetros oauth_token e oauth_verifier. Seu aplicativo deve verificar se o token corresponde ao token de solicitação recebido na etapa 1.   Solicitação do redirecionamento do cliente: https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Etapa 3: POST oauth/access_token Converta o token de solicitação em um access token utilizável. Para converter o token de solicitação em um access token utilizável, seu aplicativo deve fazer uma solicitação ao endpoint POST oauth/access_token, contendo o valor oauth_verifier obtido na etapa 2. O token de solicitação também é enviado na parte oauth_token do cabeçalho, 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 para solicitações obrigatórias do OAuth 1.0a (aplicativo-usuário) Agora que você obteve os access tokens do usuário, pode usá-los para acessar determinadas 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

Caso de uso de exemplo

O fluxo padrão é baseado na Web e utiliza o fluxo de autorização OAuth de 3 etapas (3-legged). As capturas de tela apresentadas aqui fazem parte de um exemplo cujo código-fonte você pode conferir em https://github.com/xdevplatform/twauth-web. Em algum momento do seu App, você vai querer redirecionar para o X para autorizar seu aplicativo.
Quando você redireciona para o X com o request token, o usuário será solicitado a autorizar seu aplicativo.
Ao autorizar seu aplicativo, o usuário será redirecionado para a URL de callback fornecida quando você gerou o request token. Você usará isso para obter o Access Token permanente desse usuário e armazená-lo localmente.
I