Este guia cobre autorização OAuth e tokens usados pela Application. Para quem é Partner, Application (Client) e User, consulte Partner, aplicação e utilizador.
Fluxo de autorização
Quando a Application precisa de agir em nome de um User, o User deve conceder acesso via OAuth:
sequenceDiagram
actor User
participant App as Application
participant OLX as OLX
App->>User: 1. Mostra link de autenticação OLX
(/oauth/authorize)
User->>OLX: 2. Abre o link no browser, inicia sessão
e aceita a Application
OLX->>User: 3. Redirecionamento do browser com authorization_code
User->>App: 4. O browser segue redirect_uri
com authorization_code
App->>OLX: 5. Troca authorization_code por tokens
(grant_type: authorization_code)
OLX->>App: access_token, refresh_token
Note over App: Guarda tokens apenas para este User.
User não os vê.
Operações
Após autorização, o User trabalha apenas com a Application. A Application chama a API OLX com o access_token guardado. O User nunca envia nem recebe esse token:
sequenceDiagram
actor User
participant App as Application
participant API as OLX API
User->>App: 1. Inicia uma ação
(sem access_token OLX)
Note right of User: ex. publicar esta oferta na OLX
App->>API: 2. Pedido API com access_token
ex. POST /adverts
Note over App,API: access_token usado aqui
(apenas Application ↔ API OLX)
Token fica na Application
User não o envia nem recebe
API->>App: 3. Resposta API
sucesso / erro
App->>User: 4. Mostra resultado ao User
(sem access_token OLX)
Tokens usados pela Application
No processo de autorização aparecem os seguintes elementos:
Contexto User — token no contexto de um User específico
Usado quando a Application age em nome de um User (vendedor / lister).
authorization_code— código único que a Application recebe depois de o User conceder acesso à conta OLX. A Application troca este código por umaccess_tokene umrefresh_token.access_token— token que a Application envia com pedidos API em nome desse User. Tem duração limitada (vejaexpires_inna resposta do token). Quando expira, a Application usa orefresh_tokenpara um novoaccess_token. Comaccess_tokende User, a Application pode publicar anúncios, ler estados, receber mensagens e fazer outras ações no scope do utilizador. Um token do User John Doe não pode ser usado para o User Jane Humbug — o inventário de cada User permanece separado.refresh_token— token usado no contexto User para obter um novoaccess_tokenapós expirar o anterior. Vive mais tempo que o access token. Pode ser usado até expirar ou ser invalidado. O fluxo de refresh pode devolver um novorefresh_token— guarde-o e use o mais recente. Se orefresh_tokenexpirar ou ficar inválido, o User deve passar novamente pela autorização para um novoauthorization_codee novosaccess_tokenerefresh_token.
Contexto Client — token no contexto da Application
Obtido com grant type client_credentials. Estes tokens não têm contexto de User. São usados para operações que não precisam de dados de User — por exemplo categorias, localizações e outros dados partilhados entre Users.
access_token— token que a Application envia com pedidos API no contexto da Application (Client). Também tem duração limitada; ao expirar, a Application pede um novo comclient_id/client_secretegrant_type: client_credentials. Não hárefresh_tokenneste fluxo. Este token não pode agir em nome de um User — apenas acede a recursos partilhados.client_id/client_secret— credenciais da Application no Developer Portal. Juntamente comgrant_type: client_credentialssão usadas para obter um token em contexto Client. (client_credentialsé o nome do grant type, não o segredo em si.)
grant_type: authorization_code
(+ refresh_token later)
publicar / gerir anúncios
mensagens, estados, …
inventário separado por User
grant_type: client_credentials
(sem User)
categorias, cidades / localizações
outros recursos sem contexto de utilizador
não pode agir como User
Para detalhes sobre pedidos, endpoints e scopes, consulte a secção Authentication na documentação da API.
Para se registar como Partner e criar uma Application, siga Obter acesso à API.