Obter Tokens de Acesso
Para acessar os recursos de um usuário com o prévio consentimento dele pelo Connect você precisará do código de autorização dele. Do passo anterior, lembre-se de que enviamos esse código ou pela URL de callback ou pelo listener de evento.
Troca do Código de Autorização por Tokens
O código de autorização é válido por 60 minutos e isso significa que você tem apenas 60 minutos para pedir autorização para nossa API em nome do usuário usando esse código. Envie um POST request para https://kasbah.guiabolso.com.br para a rota /partner/events/
{ "name": "oauth:tokens:exchange", "version": 1, "id": UUID, "flowId": UUID, "payload": { "code": AUTH_CODE }, "identity": { "clientId": CLIENT_ID }, "auth": { "clientSecret": CLIENT_SECRET }, "metadata": {}}
Campo | Descrição |
---|---|
id | É um identificador único, pode ser um UUID gerado de forma aleatória, que identifica esse evento específico. Você pode passar qualquer identificador aqui contanto que ele seja único e não seja sensível. |
flowId | É um identificador único, pode ser um UUID gerado de forma aleatória. Diz respeito a como o Guiabolso rastreia as requisições dentro da sua plataforma, você pode passar qualquer identificador aqui contanto que ele seja único e não seja sensível. |
code | Código de autorização do usuário recebido via callback ou event listener e passado aqui em formato string |
clientId | ID da sua chave de API que fornecemos pra você |
clientSecret | Secret da sua chave de API que fornecemos pra você |
Exemplo de uma resposta bem sucedida, note os dois tokens retornados dentro de payload.
{ "name": "oauth:tokens:exchange:response", "version": 1, "id": UUID, "flowId": UUID, "auth": {}, "identity": {}, "payload": { "accessToken": ACCESS_TOKEN, "refreshToken": REFRESH_TOKEN }, "metadata": {}}
E se o Token de Acesso tiver Expirado?
O token de acesso (i.e., accessToken) tem a expiração de apenas 30 minutos, isso quer dizer que você tem 30 minutos pra usá-lo. Se o token tiver expirado você pode gerar um outro token contanto que tenha o token de atualização (i.e. refreshToken). Envie um POST request para https://kasbah.guiabolso.com.br para a rota /partner/events/
{ "name": "oauth:refresh:token:exchange", "version": 1, "id": UUID, "flowId": UUID, "payload": { "refreshToken": REFRESH_TOKEN }, "identity": { "clientId": CLIENT_ID }, "auth": { "clientSecret": CLIENT_SECRET }, "metadata": {}}
Exemplo de uma resposta bem sucedida, note que o novo token é retornado dentro de payload.
{ "name": "oauth:refresh:token:exchange:response", "version": 1, "id": UUID, "flowId": UUID, "payload": { "accessToken": ACCESS_TOKEN }, "identity": {}, "auth": {}, "metadata": {}}
E o Middleware como ajuda?
Nós criamos um Middleware pra ajudar na integração e fazer o mapeamento dos tokens pra você, se você quiser saber mais detalhes sobre os benefícios de usar o Connector basta seguir e ler as próximas seções. Mas note que o Middleware deve ser instalado na sua infraestrutura de Cloud (hoje suportamos tanto a AWS quanto o GCP).
Envie um POST request para o Connector para a rota /partner/events/
passando o código de autorização e o próprio Connector já vai gerenciar pra você se o token de acesso tiver expirado.
{ "name": "authorization:code", "version": 1, "id": UUID, "flowId": UUID, "payload": { "authorizationCode": AUTH_CODE }, "identity": { "userId": USER_ID }, "metadata": {}, "auth": {}}
Campo | Descrição |
---|---|
id | É um identificador único, pode ser um UUID gerado de forma aleatória, que identifica esse evento específico. Você pode passar qualquer identificador aqui contanto que ele seja único e não seja sensível. |
flowId | É um identificador único, pode ser um UUID gerado de forma aleatória. Diz respeito a como o Guiabolso rastreia as requisições dentro da sua plataforma, você pode passar qualquer identificador aqui contanto que ele seja único e não seja sensível. |
authorizationCode | Código de autorização do usuário recebido via callback ou event listener e passado aqui em formato string |
userId | ID do seu usuário na sua plataforma em formato string |
Note que no Connector é necessário informar um ID de usuário da sua plataforma, e o próprio Connector já vai gerenciar pra você os mapeamentos. Ele também já terá configurado o seu acesso e suas chaves de API de maneira segura e criptografada, e portanto você não precisar se preocupar com esses dados sendo trafegados dentro da sua infraestrutura de maneira indevida.
Exemplo de uma resposta bem sucedida, note que os tokens não foram retornados na resposta porque o Connector os armazena num banco de dados e gerencia toda a troca de tokens e atualização dos tokens expirados para você.
{ "name": "authorization:code:response", "version": 1, "id": UUID, "flowId": UUID, "payload": {}, "identity": {}, "auth": {}, "metadata": {}}