1. Documentação
  2. Guias
  3. Identificação de usuários
Ir para Dashboard
  • Documentação do Pushwi
  • Início rápido
  • Instalação do SDK
  • Referência do SDK
  • Soft-ask
  • Migração de outro provedor
  • Identificação de usuários
  • Segmentos
  • Campanhas
  • Descadastro e LGPD
  • Webhooks

Identificação de usuários

Conecte os dispositivos ao usuário logado com external_id e um token assinado no seu servidor.

Loading documentation…

Migração de outro provedor< PreviousSegmentosNext >

Powered by heyo

On this page

Por que o tokenGerando o tokenPassando para o SDKO que acontece na APILogout

Sem identificação, cada navegador que aceita notificações vira um assinante anônimo. Quando você informa o ID do usuário no seu sistema, o external_id, os dispositivos da mesma pessoa ficam no mesmo assinante. Assim dá para segmentar por dados da conta e apagar tudo de uma pessoa com uma chamada só.

Por que o token

O external_id sai do navegador, e qualquer pessoa pode abrir o console e trocar o valor. Para impedir que alguém se inscreva como outro usuário e passe a receber as notificações dele, a API só aceita o external_id acompanhado de um token assinado com um segredo que só o seu servidor conhece.

O token é o HMAC-SHA256 do external_id, em hexadecimal minúsculo, com o segredo de identidade do site como chave. O segredo fica em Desenvolvedor › Chaves de API no painel.

O segredo de identidade não vai para a página

Gere o token no servidor e mande para a página só o resultado. Com o segredo no JavaScript, qualquer um consegue assinar qualquer ID.

Gerando o token

$token = hash_hmac('sha256', (string) $user->id, $identitySecret);

O ID assinado precisa ser exatamente o mesmo texto passado ao SDK. 42 e "42" dão o mesmo resultado porque ambos viram o texto 42, mas user-42 e 42 não.

Passando para o SDK

Renderize o ID e o token na página do usuário logado e chame login pela fila de comandos, antes de o SDK carregar:

html
<script async src="https://sdk.pushwi.com/v1/pushwi.js" data-site="pub_XXXXXXXXXXXXXXXXXXXXXXXX"></script><script>  window.pushwi = window.pushwi || function () {    (window.pushwi.q = window.pushwi.q || []).push(arguments);  };  pushwi("login", "42", "<?= $token ?>");</script>

Dessa forma o login vai junto na inscrição automática. Se o usuário fizer login depois que o SDK carregou, chame login e em seguida subscribe para enviar na hora.

O que acontece na API

Quando a inscrição chega com external_id e token válido:

SituaçãoResultado
Já existe assinante com esse external_idO dispositivo passa para ele.
O dispositivo era de um assinante anônimoO anônimo recebe o external_id e mantém tags e atributos.
O dispositivo era de outro usuário identificadoEle passa para o assinante do novo external_id, que é criado se não existir.

Com token inválido ou ausente, a API recusa a inscrição inteira com 422 e a mensagem O external_id não tem uma assinatura válida do publisher. O dispositivo não é registrado nem atualizado.

Logout

Não existe comando de logout. Depois que o usuário sai, o dispositivo continua ligado ao último assinante identificado, e inscrições sem external_id não desfazem a ligação. Se for outro usuário a entrar no mesmo navegador, o login dele move o dispositivo.

Se o seu caso exige que um navegador compartilhado pare de receber notificações da conta anterior, chame pushwi("unsubscribe") no logout.