Autorizando uma solicitação
O objetivo deste documento é mostrar como modificar solicitações HTTP para enviar solicitações autorizadas à X API. Todas as APIs do X são baseadas no protocolo HTTP. Isso significa que qualquer software que você escreva usando as APIs do X envia uma série de mensagens estruturadas para os servidores do X. Por exemplo, uma solicitação para publicar o texto “Hello Ladies + Gentlemen, a signed OAuth request!” como um Tweet será mais ou menos assim:- Qual aplicação está fazendo a solicitação
- Em nome de qual usuário a solicitação está publicando
- Se o usuário concedeu à aplicação autorização para publicar em seu nome
- Se a solicitação foi adulterada por terceiros em trânsito
Nonce
O parâmetro oauth_nonce é um token único que sua aplicação deve gerar para cada solicitação única. O X usará esse valor para determinar se uma solicitação foi enviada várias vezes. O valor desta solicitação foi gerado codificando em base64 32 bytes de dados aleatórios e removendo todos os caracteres não-word, mas qualquer abordagem que produza uma string alfanumérica relativamente aleatória deve funcionar aqui.
Signature
O parâmetro oauth_signature contém um valor gerado ao passar todos os outros parâmetros da solicitação e dois valores secretos por um algoritmo de assinatura. O propósito da assinatura é permitir que o X verifique se a solicitação não foi modificada em trânsito, verifique a aplicação que envia a solicitação e verifique se a aplicação tem autorização para interagir com a conta do usuário.
O processo para calcular o oauth_signature desta solicitação é descrito em Criando uma assinatura.
Signature method
O oauth_signature_method usado pelo X é HMAC-SHA1. Esse valor deve ser usado para qualquer solicitação autorizada enviada à API do X.
Timestamp
O parâmetro oauth_timestamp indica quando a solicitação foi criada. Esse valor deve ser o número de segundos desde a epoch Unix no momento em que a solicitação é gerada, e deve ser fácil de gerar na maioria das linguagens de programação. O X rejeitará solicitações criadas em um passado muito distante, então é importante manter o relógio do computador que gera as solicitações sincronizado via NTP.
Token
O parâmetro oauth_token normalmente representa a permissão de um usuário para compartilhar acesso à sua conta com sua aplicação. Existem algumas solicitações de autenticação em que esse valor não é passado ou é outra forma de token, mas essas são abordadas em detalhes em Obtendo access tokens. Para a maioria das solicitações de uso geral, você usará o que chamamos de access token.
Você pode gerar um access token válido para sua conta na página de configurações do seu X app no Developer Console.
Version
O parâmetro oauth_version deve sempre ser 1.0 em qualquer solicitação enviada à API do X.
Construindo a string do header
Para construir a string do header, imagine que você está escrevendo em uma string chamada DST.- Anexe a string “OAuth ” (incluindo o espaço no final) a DST.
- Para cada par chave/valor dos 7 parâmetros listados acima:
- Faça o percent encode da chave e anexe-a a DST.
- Anexe o caractere de igual ‘=’ a DST.
- Anexe aspas duplas ‘”’ a DST.
- Faça o percent encode do valor e anexe-o a DST.
- Anexe aspas duplas ‘”’ a DST.
- Se houver mais pares chave/valor, anexe uma vírgula ‘,’ e um espaço ‘ ‘ a DST.