Autenticação
O que é?
A autenticação do Huggy Chat permite validar a identidade de um usuário que deseja interagir com o seu sistema. Caso o usuário em questão seja conhecido, uma sessão é iniciada para ele e o seu atendimento é retomado exatamente do ponto em que parou. Você pode autenticar o usuário mesmo que ele utilize diferentes dispositivos para acessar o seu sistema.
O passo a passo para configurar a autenticação do Huggy Chat é dividido em três etapas:
- Localizar a sua chave secreta no Painel da Huggy
- Gerar o token necessário para autenticar o usuário
- Incluir no seu sistema a autenticação
Localizando a chave secreta
Há uma chave secreta única para cada Huggy Chat configurado na plataforma. Ela funciona como uma assinatura digital que garante toda a segurança do processo de autenticação.
⚠️ Não forneça ou torne pública a sua chave secreta.
Para visualizar a sua chave secreta, acesse o menu de Configurações no Painel da Huggy, depois clique em Canais, selecione a opção Widget e escolha o Huggy Chat desejado. Ela aparecerá logo no primeiro campo da página, conforme indicado na imagem a seguir:
Nessa mesma página, você pode também gerar uma nova chave secreta para o seu Huggy Chat. Recomendamos utilizar essa opção como medida de segurança caso você identifique que o sigilo dela esteja comprometido.
Como gerar o token de autenticação
O próximo passo é gerar o token necessário para o processo de autenticação. Ele permitirá que uma informação única do seu usuário seja repassada com segurança para a nossa API, garantindo que a solicitação de fato veio do seu Huggy Chat.
Utilizamos o padrão JWT (JSON Web Token) para o nosso token de autenticação. Ele exige um código de autenticação com base em hash (HMAC), composto por uma chave secreta e um algoritmo de hash.
Em nosso caso, eles são:
- A chave secreta do Huggy Chat escolhido
- O algoritmo de hash HMAC-SHA256
O exemplo abaixo demonstra como o JWT pode ser gerado utilizando PHP ou JavaScript:
⚠️ Não deixe explícita a chave secreta no código-fonte do seu sistema. Certifique-se de que somente pessoas autorizadas tenham acesso a essa informação.
Incluindo a autenticação no seu sistema
Você pode incluir a autenticação no seu sistema de duas maneiras:
- Definindo a variável global huggyData
- Utilizando o método Huggy.login (não exige o recarregamento da página)
Em ambos os casos, você precisará fornecer duas propriedades: userIdentifier e userHash.
O userIdentifier
é um identificador único do seu usuário. Ele pode ser, por exemplo, um endereço de e-mail, um telefone ou um valor alfanumérico.
O userHash
, por sua vez, é o token de autenticação que você aprendeu a gerar no passo anterior.
Definindo a variável global huggyData
Escolhendo essa opção, basta incluir a variável huggyData
no escopo global do objeto window
, antes da inicialização do Huggy Chat. Veja como isso pode ser feito:
window.huggyData = {
userIdentifier: 'user@company.com',
userHash: 'eyJ0eXAiOiJKV2QiLCJhbGciPiJIUzI1NiJ9.eyJqdGkiOiJ1c2VyMUBjb21wYW55LmNvbSJ9.upuQ_qWcSFWdzIAGjEfSi-v_RvWC-bicTLNyEePPOhY'
}
2
3
4
Utilizando o método Huggy.login
Essa opção oferece a possibilidade de autenticar o usuário sem a necessidade de recarregar a página. Você pode declarar o método da seguinte maneira:
Huggy.login({
userIdentifier: 'john@doe.com',
userHash: 'eyJ0eXAiOiJKV1QiLCJfbGcuOiJIUzI1NiJ9.eyJqdGkiOiJjYXJlb3MuYWd1cWFyQGh1Z2d5LmleIn0.zAqI8oaNPitqy6Eg7aw1LdlWeinT8acPwueQLQc7q70'
})
2
3
4
Para mais informações, consulte a especificação do objeto HuggyChatLogin.
Encerrando a sessão do usuário autenticado
Para encerrar a sessão do usuário no Huggy Chat, você pode utilizar um método que fornecemos chamado Huggy.logout
. Ele oferece alguns parâmetros opcionais para definir se o Huggy Chat deve ou não ser recarregado e disparar um método callback caso necessário.
Utilizando o método Huggy.logout
Para mais informações, consulte a especificação do objeto HuggyChatLogout.
Caso você precise iniciar o Huggy Chat novamente após executar Huggy.logout
com a propriedade reload
definida como false
, será necessário inicializá-lo programaticamente.