> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OAuth 1.0a

> Visão geral da autenticação por contexto de usuário OAuth 1.0a no X, abordando chaves de API, tokens de acesso, assinatura de requisições e ferramentas para fazer chamadas de API autorizadas.

export const Button = ({href, children}) => {
  return <div className="not-prose">
    <a href={href}>
      <button className="x-btn">
        <span>{children}</span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

## OAuth 1.0a

Muitos endpoints da plataforma para desenvolvedores do X usam o método OAuth 1.0a para agir, ou fazer requisições à API, em nome de uma conta do X. Por exemplo, se você tem um app de desenvolvedor do X, pode fazer requisições à API em nome de qualquer conta do X desde que esse usuário autentique seu app.

Observação: se você não está familiarizado com conceitos como HMAC-SHA1 e codificação por porcentagem, recomendamos que confira a seção "ferramentas úteis" abaixo, que lista alguns clientes de API que simplificam bastante o processo de autenticação.

### Conceitos-chave

#### Assinando uma requisição com chaves e tokens

Você precisa assinar cada requisição à API passando várias chaves e tokens gerados em um cabeçalho de autorização. Para começar, você pode gerar várias chaves e tokens na página de detalhes do seu [app de desenvolvedor do X](/resources/fundamentals/developer-apps), incluindo os seguintes:

|                                                                                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| :----------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API key e secret:<br /><br />`oauth_consumer_key`<br /><br />`oauth_consumer_secret` | Pense neles como o nome de usuário e a senha que representam seu app de desenvolvedor do X ao fazer requisições à API.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Access token e secret:<br /><br />`oauth_token`<br /><br />`oauth_token_secret`      | Um access token e um access token secret são credenciais específicas do usuário utilizadas para autenticar requisições à API OAuth 1.0a. Eles especificam a conta do X em nome da qual a requisição é feita.<br /><br />Você pode gerar seu próprio access token e token secret se quiser que seu app faça requisições em nome da mesma conta do X associada à sua conta de desenvolvedor na página de detalhes do [app de desenvolvedor do X](/resources/fundamentals/developer-apps).<br /><br />Se você quiser gerar access tokens para um usuário diferente, consulte "Fazendo requisições em nome de usuários" abaixo. |

#### Fazendo requisições em nome de usuários

Ao criar uma assinatura, você precisa de um conjunto de access tokens que representa o usuário em nome de quem você vai fazer a requisição.

Você pode gerar um conjunto de access tokens que representa a conta do X proprietária do app de desenvolvedor do X na [página de detalhes do app,](https://developer.x.com/content/developer-twitter/en/apps) mas se quiser fazer uma requisição em nome de uma conta do X diferente, o proprietário dessa conta deve conceder acesso a você fazendo login em sua conta como parte do [fluxo OAuth de 3 etapas](/resources/fundamentals/authentication#obtaining-access-tokens-using-3-legged-oauth-flow). O resultado desse processo é um conjunto de access tokens (oauth\_token e oauth\_token\_secret) que podem ser usados para fazer uma requisição OAuth 1.0a.

Uma vez que você tenha essas chaves e tokens, pode [criar uma assinatura](/resources/fundamentals/authentication#creating-a-signature) do zero. Não recomendamos isso, a menos que saiba o que está fazendo, ou se estiver usando uma das ferramentas mencionadas abaixo para fazer uma requisição a um endpoint que exige OAuth 1.0a.

Para referência, aqui está um exemplo de uma requisição cURL assinada com todos os tokens gerados passados em um cabeçalho de autorização:

```bash theme={null}
curl --request POST \
  --url 'https://api.x.com/1.1/statuses/update.json?status=Hello%20world' \
  --header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \
```

<Note>
  **Observação:** Os access tokens do usuário são sensíveis e devem ser guardados com muito cuidado. Quando os access tokens são gerados, o usuário que eles representam está confiando ao seu aplicativo a responsabilidade de mantê-los seguros. Se a segurança das API keys e dos access tokens do usuário for comprometida, seu aplicativo poderá expor o acesso a informações privadas e à funcionalidade da conta. Encorajamos você a aprender mais sobre [proteger chaves e access tokens](/resources/fundamentals/developer-apps).
</Note>

### Ferramentas úteis

O processo de [assinar uma requisição](/resources/fundamentals/authentication#creating-a-signature) é complicado. Recomendamos que você use uma biblioteca cliente de API que gera automaticamente boa parte do token de autenticação:

|                                        |                                                                                                                                                                                                   |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Postman](https://www.getpostman.com/) | Um cliente de API que permite construir e enviar requisições REST API. Leia nosso tutorial "[Começando com o Postman](/tutorials/postman-getting-started)" para saber mais sobre esta ferramenta. |
| [Insomnia](https://insomnia.rest/)     | Insomnia é um cliente REST API com gerenciamento de cookies, variáveis de ambiente, geração de código e autenticação para Mac, Windows e Linux.                                                   |
