Boas práticas no uso das URL’s de Callback para identificar o seu cliente

Rafael Hancke
Ship It!
Published in
2 min readNov 20, 2020
Integre sua solução ao RD Station, conquiste clientes e amplie negócios!

CONTEXTO

Muitos de nossos parceiros de integração utilizam subdomínios ou compõem a URL de suas apps com a identificação do cliente.

Exemplo:

https://meucliente1.minhaapp.com.br

https://www.minhaapp.com.br/meucliente1

Muitas dúvidas surgem sobre o que fazer ou quais são as boas práticas para identificar o cliente no processo de integração entre a app e o RD Station Marketing.

Em alguns casos são cadastradas uma URL’s de Callback para cada cliente, porém este processo não é escalável. (Imagina cadastrar uma nova url de callback a cada novo cliente que entra em sua plataforma...)

Exemplo:

https://meucliente1.minhaapp.com.br/rdstation/auth/callback

https://meucliente2.minhaapp.com.br/rdstation/auth/callback

https://meucliente3.minhaapp.com.br/rdstation/auth/callback

Em outros casos existem tentativas de utilizar wildcards, mas esta abordagem é incompatível com o padrão OAuth2 e ‘quebra’ o processo de redirecionamento durante o processo de autenticação.

Exemplo:

https://*.minhaapp.com.br/rdstation/auth/callback

BOAS PRÁTICAS

Como fazer? Qual é a solução?

Simples! Basta enviar o parâmetro state com a identificação do seu cliente, no início do flow de autorização :)

Mas como?

1- Acesse o nosso Publisher e cadastre uma única URL de Callback para sua app:

Exemplo:

Definindo a URL de Callback na tela de cadastro da App

2- No flow de autorização, adicione o parâmetro state, com um valor que identifique(*) o seu cliente unicamente.

Exemplo:

https://api.rd.services/auth/dialog?state=meucliente1&client_id=123&redirect_uri=https%3A%2F%2Fminhaapp.minhaempresa.com.br%2Frdstation%2Fauth%2Fcallback

* Caso precise identificar o cliente com mais de um valor, você poderá atribuir ao campo state um valor no formato Base64 Encoded json, que contenha os atributos desejados. (Atenção quanto ao tamanho máximo da URL!)

Exemplo:

{

“customer”: “meucliente1”,

“identifier”: “2020”

}

https://api.rd.services/auth/dialog?state=ewogICAiY3VzdG9tZXIiOiAibWV1Y2xpZW50ZTEiLAogICAiaWRlbnRpZmllciI6ICIyMDIwIgp9Cg==&client_id=123&redirect_uri=https%3A%2F%2Fminhaapp.minhaempresa.com.br%2Frdstation%2Fauth%2Fcallback

3- Após o processo de login e confirmação de acesso, com a URL de Callback estarão presentes os parâmetros code e state. (O valor do parâmetro state será o mesmo enviado no início do flow)

Legal, mas o que faço depois?

Considere o parâmetro state retornado junto à URL de Callback, para redirecionar o seu cliente dentro de sua plataforma :)

Exemplo:

https://meucliente.minhaapp.com.br/home

https://www.minhaapp.com.br/meucliente/home

--

--