Como usar o Nvoip Web SDK para OTP e 2FA

Como usar o Nvoip Web SDK para OTP e 2FA

Este artigo mostra como usar o Nvoip Web SDK para adicionar validação por OTP e 2FA em uma aplicação web.
Importante: nunca exponha Napikey, User Token, client secret, access token ou qualquer credencial da Nvoip no navegador. O SDK deve chamar um endpoint do seu backend, e o backend deve chamar a API da Nvoip.

Quando usar OTP ou 2FA?

Fluxo Quando usar Função do SDK
OTP Validação de telefone em cadastro, recuperação de conta, checkout ou confirmação de contato. NvoipAuthWidget.startOTP()
2FA Segunda etapa de segurança depois que e-mail e senha já foram validados pelo backend. NvoipAuthWidget.start2FA()

1. Instale o pacote

Em projetos com npm, instale o SDK:

npm install nvoip-web-sdk

Você também pode usar os arquivos distribuídos em dist/nvoip-auth-widget.css e dist/nvoip-auth-widget.js.

2. Crie os endpoints no seu backend

O frontend deve chamar endpoints próprios da sua aplicação, por exemplo:

  • POST /api/nvoip/auth/start: inicia o envio do código por SMS, ligação ou WhatsApp.
  • POST /api/nvoip/auth/confirm: valida o código informado pelo usuário.

No backend, use a API da Nvoip para gerar o OAuth e chamar os endpoints corretos. Para OTP, os canais principais são:

  • SMS: POST /otp com phoneNumber e methods.sms=true.
  • Ligação: POST /otp com phoneNumber e methods.torpedo=true.
  • Validação OTP: GET /check/otp com code e key.

Para 2FA por SMS, use POST /2fa e depois GET /check/2fa.

3. Use 2FA depois do login

Depois que o backend validar e-mail e senha, abra o 2FA. Ao validar o código, o SDK pode redirecionar para a URL final do login.

<link rel="stylesheet" href="/dist/nvoip-auth-widget.css" />
<script src="/dist/nvoip-auth-widget.js"></script>

<script>
async function startVerification(payload) {
  const response = await fetch("/api/nvoip/auth/start", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload)
  });
  return response.json();
}

async function confirmVerification(payload) {
  const response = await fetch("/api/nvoip/auth/confirm", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload)
  });
  return response.json();
}

function afterPasswordLogin(user) {
  NvoipAuthWidget.start2FA({
    channels: ["sms", "voice", "whatsapp"],
    phone: user.phone,
    maskedPhone: user.maskedPhone,
    accountLabel: user.email,
    returnTo: "/app",
    startVerification,
    confirmVerification
  });
}
</script>

4. Use OTP direto para validar telefone

Use OTP quando o usuário ainda está em cadastro, recuperação de conta ou confirmação de número.

<button id="validate-phone">Validar telefone</button>
<input id="phone" type="tel" placeholder="5511999999999" />

<script>
document.getElementById("validate-phone").addEventListener("click", () => {
  NvoipAuthWidget.startOTP({
    channels: ["whatsapp", "sms", "voice"],
    phone: document.querySelector("#phone").value,
    returnTo: "/cadastro/concluido",
    startVerification,
    confirmVerification
  });
});
</script>

5. Escolha os canais exibidos no frontend

O desenvolvedor controla quais opções aparecem para o usuário:

channels: ["sms", "voice", "whatsapp"]

Se a conta ainda não tiver template de WhatsApp aprovado, mantenha apenas SMS e ligação até concluir a configuração.

6. Teste localmente

O repositório possui duas demos:

  • Mock: simula o envio e usa código fixo para validar o fluxo visual.
  • Real: usa um backend Node local para chamar a API da Nvoip.
npm run demo:mock
npm run demo:real

Cuidados de segurança

  • Não coloque credenciais da Nvoip em HTML, JavaScript público, apps mobile ou repositórios frontend.
  • Gere o access_token no backend usando OAuth.
  • Masque telefone e e-mail no frontend sempre que possível.
  • Valide no backend se o usuário atual pode iniciar aquele OTP ou 2FA.
  • Defina expiração e limite de tentativas para reduzir abuso.

Links úteis

    • Related Articles

    • Como acessar a área Desenvolvedor e usar suas credenciais da API

      Este artigo explica como acessar a área Desenvolvedor no painel da Nvoip, consultar suas credenciais e encontrar a documentação da API. Antes de começar: trate a Napikey e o User Token como dados sensíveis. Não compartilhe essas informações em ...
    • Como usar o Nvoip IP Provisioner para configurar telefones IP e ATAs

      O Nvoip IP Provisioner e um aplicativo Windows gratuito para ajudar na configuracao inicial de telefones IP e ATAs em rede local. Antes de comecar Use um computador Windows na mesma rede local do telefone ou ATA. Confirme que a interface web do ...
    • Como usar o relatório de chat no painel da Nvoip

      Este artigo explica como consultar o Relatório de Chat no painel da Nvoip e quais informações usar para acompanhar atendimentos. Antes de começar: acesse Relatórios > Chat. Usuários secundários precisam da permissão de relatório de chat. O que ...
    • Como usar a área de integrações no painel da Nvoip

      Este artigo explica como usar a área de Integrações no painel da Nvoip para encontrar conectores, addons e recursos que ligam a Nvoip a outras ferramentas. Antes de começar: algumas integrações dependem de plano, permissão, credenciais externas ou ...
    • Como usar o relatório de ligações no painel da Nvoip

      Este artigo explica como usar o relatório de ligações no painel da Nvoip para filtrar chamadas, analisar status, abrir gravações e acompanhar transcrições. Antes de começar: a consulta fica em Relatórios > Ligações. Usuários secundários precisam da ...