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 phoneOu 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:
| Backend | O que o comando faz | O que continua manual |
|---|---|---|
| Firebase | Liga o botão e habilita o provedor Phone no Firebase Auth | Nada obrigatório. Opcional: números de teste |
| Supabase | Liga o botão e habilita o provedor Phone no Supabase Auth | Conectar um provedor de SMS (Twilio, MessageBird, Vonage...) com conta paga |
| API REST | Nada. Não suportado | Implementar 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 --checkMostra 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 --offO 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

