A CentralCart atesta a identidade e para por aí. O que aquele cliente pode ver,
fazer ou receber é regra sua, e ela continua onde está hoje.
Por que não dá para ler a sessão direto
Duas saídas parecem óbvias e as duas são armadilhas:- O cookie de sessão é
httpOnlye preso ao domínio da loja. O seu backend, em outro domínio, nunca o recebe. - Ler o e-mail pelo JavaScript da página e enviar ao seu servidor não prova nada. Qualquer pessoa manda qualquer e-mail para o seu endpoint.
Antes de começar
Crie uma chave de API na sua loja com o escopo Identificar o cliente logado (customers:identify) e guarde como secret no seu backend.
O fluxo
1
A página pede um passe
A chamada acontece no próprio domínio da loja, então a sessão do cliente é
reconhecida sozinha. Não precisa enviar token nenhum.
2
A página entrega o passe ao seu backend
3
O seu backend troca o passe pela identidade
De servidor para servidor, com a sua chave de API.O passe é consumido nesse instante. Uma segunda troca do mesmo passe falha.
4
O seu sistema segue com a regra dele
Agora você sabe quem é. O que vem depois é seu.Emita a sua sessão aqui. O passe serve para começar, não para repetir a cada
requisição.
A página completa
O exemplo abaixo é uma página do tema, com cabeçalho e rodapé normais da loja.O
<% unless user %> é experiência, não proteção. Ele evita mostrar uma tela
quebrada para quem não está logado. Quem decide de verdade é o seu backend,
porque é ele que guarda os dados.Emitir o passe
api.centralcart.io. É justamente por ser a
mesma origem que o cookie de sessão chega sozinho.
401 com { "error": "CUSTOMER_UNAUTHENTICATED" }.
O teto é de 20 passes por minuto, por cliente. Uma página legítima pede um por
carregamento.
Trocar o passe
Ver Identificar o cliente logado para a referência completa do endpoint.email é a identidade do cliente na loja, e é por ele que você casa com a sua
base.
O que sustenta a segurança disso
- O passe não serve sozinho. Sem a chave de API da loja, ninguém o resolve.
- Vale uma vez. A primeira troca consome o passe.
- Vale 60 segundos. Tempo de atravessar da página para o seu servidor, e nada além disso.
- Vale só na loja que o emitiu. Uma chave de outra loja não resolve.
- Não carrega sessão. Trocar o passe devolve identidade, nunca um token que permita agir como aquele cliente.
- Revogação imediata. Revogue a chave no painel e a integração para na hora.
Perguntas frequentes
O cliente precisa fazer um segundo login?
O cliente precisa fazer um segundo login?
Não. Ele faz o login normal da loja, por código de e-mail, Google ou Discord,
e a página usa essa sessão.
Dá para usar isso fora de uma página da loja?
Dá para usar isso fora de uma página da loja?
Não. O passe depende do cookie de sessão, que só é enviado no domínio da
loja. Para um front em outro domínio, use a Storefront
API, onde o próprio
comprador faz login e recebe um token.
E se o que eu preciso saber já está na CentralCart?
E se o que eu preciso saber já está na CentralCart?
Então não precisa de nada disso. Se a pergunta é “este cliente comprou tal
produto”, a tag
load orders aceita package_id e responde direto no
template, sem sistema externo no meio. Veja Obtendo dados.O passe existe para o caso contrário: a resposta está numa base que é sua.Posso guardar o passe para usar depois?
Posso guardar o passe para usar depois?
Não. Ele morre em 60 segundos e no primeiro uso. Guarde a sua própria sessão
depois da troca.