O que o Firebase fornece
Um valor:uid. O Firebase é o provedor que não chega como cookie que o seu
servidor pode ler — o navegador guarda um ID token e o envia, e um token é uma
string que qualquer um pode compor. É o verifyIdToken que transforma isso em
fato.
lib/firebase.ts
A metade do servidor
app/api/userkit-boot/route.ts
401, exatamente como um ausente. A
diferença é um detalhe da sua verificação para o qual o navegador não tem uso.
A metade do cliente
getState().verified só é true quando o HMAC conferiu. Logado no Firebase com
verified: false significa que o segredo é do outro ambiente ou que a mensagem
assinada não era exatamente o external_id.
Session cookies também funcionam
createSessionCookie é a outra forma, e deixa este endpoint com a cara do exemplo
do Supabase: leia o cookie, verifique com verifySessionCookie, assine o uid. Nada
acima da linha do provedor muda.
Configuração
O que não viaja
Um ID token do Firebase carregaemail e a claim email_verified. São afirmações
sobre os registros do Firebase, e não viram identidade no UserKit: um e-mail
enviado pelo /v1/boot é guardado como atributo, não resolve para um contato
existente e não vira aresta de identidade. O HMAC prova o external_id e só ele.
Para provar um endereço, mande um magic link ou um código por
e-mail — os dois fluxos que chegam nele.
O exemplo completo
Um app Next executável com esses arquivos, um
.env.example e as partes que esta
página deixa de fora.