KasyKasy

Login por telefone (OTP)

Entrar com o número de telefone e um código de 6 dígitos por SMS. Opt-in, em duas telas, com o que a CLI automatiza e o que fica manual.

A pessoa digita o número, recebe um código de 6 dígitos por SMS e, ao confirmar, entra no app pelo fluxo normal de login. São duas telas: /signinWithPhone (país e número) e /signinWithPhone/code (o código). O botão Continuar com telefone aparece no Login e no Cadastro quando a flag withPhoneSignIn está ligada.

O login por telefone não vem ligado por padrão. O modo Rápido não inclui. Você liga no modo Avançado (marcando Telefone) ou depois, num projeto que já existe, com kasy phone. No backend API REST ele não existe: o botão nunca aparece.

O que já vem pronto

  • Seletor de país com bandeira, busca e nomes em português, inglês e espanhol, com o país sugerido pelo aparelho.
  • Máscara e validação reais por país (tamanho e plano de numeração), então o botão só liga com um número válido.
  • Tela do código com reenvio após 30 segundos e opção de trocar o número.
  • Se a pessoa estava como convidada, o telefone é vinculado à conta atual.
  • As duas telas aparecem no Storyboard com as setas Login, Cadastro, Telefone, Código e Home.

Implementação

Projeto novo

Rode kasy new no modo Avançado e, na lista de provedores de login, marque Telefone. O comando liga o botão e já habilita o provedor Phone no backend (Firebase ou Supabase). No Supabase, falta só conectar o provedor de SMS.

Projeto que já existe

kasy phone

Ou peça ao assistente "ativa o login por telefone no meu projeto" (tool setup_phone_login do MCP). O comando liga o botão e habilita o provedor no backend, quando existe API para isso:

BackendO que o comando fazO que continua manual
FirebaseLiga o botão e habilita o provedor Phone no Firebase AuthNada obrigatório. Opcional: números de teste
SupabaseLiga o botão e habilita o provedor Phone no Supabase AuthConectar um provedor de SMS (Twilio, MessageBird, Vonage...) com conta paga
API RESTNada. Não suportadoImplementar no seu servidor

Projeto criado com uma versão anterior à kasy-cli 1.85? Rode kasy update core antes: ele traz as telas, a segunda rota e as dependências, e deixa o botão desligado até você rodar kasy phone. O kasy phone avisa se isso estiver faltando.

Conferir o que falta

kasy phone --check

Mostra o que está pronto e o que falta (módulo de autenticação, botão, provedor no backend e, no Supabase, o provedor de SMS). O assistente faz o mesmo com setup_phone_login.

Testar sem gastar SMS

  • Firebase: em Authentication, Sign-in method, Phone, cadastre números de teste com um código fixo.
  • Supabase: no provedor Phone, use a lista de números de teste com código fixo.

Depois: Login, Continuar com telefone, número, código, Home.

Esconder o botão

kasy phone --off

O provedor continua habilitado no backend. Rode kasy phone de novo para voltar.

Informações

Automatizado ou manual

  • Automatizado: a flag withPhoneSignIn, o botão no Login e no Cadastro, as duas telas, a habilitação do provedor no Firebase e no Supabase, a SHA-1 do Android (já registrada pela CLI).
  • Manual: o provedor de SMS do Supabase (exige conta paga no provedor), e no iOS configurar o push (APNs) para a verificação silenciosa. Sem APNs o Firebase cai no reCAPTCHA.
  • Web com Firebase: o Firebase usa reCAPTCHA na verificação. Esse fluxo na web ainda não foi validado ao vivo; teste antes de oferecer a clientes.

Custos

Cada código é um SMS cobrado pelo provedor. O Firebase tem uma cota gratuita limitada e cobra por SMS acima dela (confira a tabela de preços atual). No Supabase o custo é o do provedor que você conectar.

Se o botão não aparece

Rode kasy phone --check. As causas comuns: withPhoneSignIn desligado, módulo de autenticação desligado ou backend API REST.

Atualizado em 03/11/2026