Criando uma assinatura
Esta página explica como gerar uma assinatura OAuth 1.0a HMAC-SHA1 para uma solicitação HTTP. Essa assinatura será adequada para passar à X API como parte de uma solicitação autorizada, conforme descrito em autorizando uma solicitação. A solicitação usada para demonstrar a assinatura é um POST para https://api.x.com/1.1/statuses/update.json. A solicitação crua se parece com isto:
A base URL é a URL para a qual a solicitação é direcionada, sem quaisquer parâmetros de query string ou hash. É importante usar o protocolo correto aqui, então certifique-se de que a parte “https://” da URL corresponda à solicitação real enviada à API.
Coletando parâmetros
Em seguida, reúna todos os parâmetros incluídos na solicitação. Existem dois lugares para esses parâmetros adicionais — a URL (como parte da query string) e o corpo da solicitação. A solicitação de exemplo inclui um único parâmetro em cada local:
Esses valores precisam ser codificados em uma única string, que será usada mais adiante. O processo para construir a string é muito específico:
- Faça o percent encode de cada chave e valor que será assinado.
- Ordene a lista de parâmetros em ordem alfabética [1] pela chave codificada [2].
- Para cada par chave/valor:
- Anexe a chave codificada à string de saída.
- Anexe o caractere ‘=’ à string de saída.
- Anexe o valor codificado à string de saída.
- Se houver mais pares chave/valor, anexe um caractere ‘&’ à string de saída.
Criando a signature base string
Os três valores coletados até aqui devem ser unidos em uma única string, a partir da qual a assinatura será gerada. Ela é chamada de signature base string pela especificação OAuth. Para codificar o método HTTP, a base URL e a parameter string em uma única string:- Converta o método HTTP para maiúsculas e defina a string de saída como esse valor.
- Anexe o caractere ‘&’ à string de saída.
- Faça o percent encode da URL e anexe-a à string de saída.
- Anexe o caractere ‘&’ à string de saída.
- Faça o percent encode da parameter string e anexe-a à string de saída.
Obtendo uma signing key
Os últimos dados a coletar são os segredos que identificam o X app fazendo a solicitação e o usuário em nome do qual a solicitação está sendo feita. É muito importante notar que esses valores são incrivelmente sensíveis e nunca devem ser compartilhados com ninguém. O valor que identifica seu app para o X é chamado de consumer secret e pode ser encontrado no Developer Console visualizando a página de detalhes do app. Ele será o mesmo para toda solicitação enviada pelo seu X app.
O valor que identifica a conta em nome da qual sua aplicação está atuando é chamado de OAuth token secret. Esse valor pode ser obtido de várias formas, todas descritas em obtendo access tokens.
Novamente, é muito importante manter esses valores privados à sua aplicação. Se você acredita que seus valores foram comprometidos, regenere seus tokens (os tokens desta página foram marcados como inválidos para solicitações reais).
Esses dois valores precisam ser combinados para formar uma signing key que será usada para gerar a assinatura. A signing key é simplesmente o token secret com percent encoding:
Observe que há alguns fluxos, como ao obter um request token, em que o token secret ainda não é conhecido. Nesse caso, a signing key deve consistir no consumer secret com percent encoding seguido de um caractere ampersand ‘&’.