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:

Secret Key

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.

Refresh Key

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'
}
1
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'
}) 
1
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.

Tipos