Realizar a verificação por SMS em um servidor

Para verificar os números de telefone automaticamente, é necessário implementar as APIs cliente e de servidor do fluxo de verificação. Este documento descreve como implementar a parte do servidor.

O servidor de verificação do telefone é responsável por três tarefas:

  1. Criar uma mensagem de verificação que inclua um código de uso único e tenha o formato esperado pela API SMS Retriever do lado do cliente
  2. Enviar a mensagem de verificação ao dispositivo do usuário
  3. Verificar o código único quando ele é enviado de volta ao servidor e concluir quaisquer tarefas pós-verificação necessárias para o back-end

Os detalhes de como seu aplicativo interage com o servidor dependem de você. Um erro comum abordagem é expor uma API REST com dois endpoints: um que recebe solicitações para verificar um determinado número de telefone e enviar as mensagens de verificação SMS, e uma segundo endpoint que recebe códigos únicos do seu app.

1. Criar uma mensagem de verificação

Quando seu servidor recebe uma solicitação para verificar um número de telefone, a primeira construção a mensagem de verificação que você enviará ao dispositivo do usuário. Esta mensagem precisa:

Caso contrário, o conteúdo da mensagem de verificação pode ser o que você escolher. É útil criar uma mensagem da qual você possa extrair facilmente o único código mais tarde. Por exemplo, uma mensagem de verificação válida pode ser semelhante a seguinte:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Como gerar um código único

É possível implementar códigos únicos de várias maneiras, desde que os códigos sejam e você pode vincular os códigos a um usuário ou número de telefone quando o cliente app as envia de volta ao servidor. Os códigos devem ser fáceis de digitar, acomodar situações que podem exigir que os usuários digitem o código manualmente.

Uma maneira de implementar códigos únicos é gerar números aleatórios, que você usa como chaves em uma tabela de banco de dados. Por exemplo, você pode ter um objeto "Pendingverifications" da seguinte forma:

ID Usuário Expiração
123456789... 1234 14-03-2017 1:59

Você pode usar o ID codificado em base32 como um código único.

Como calcular a string de hash do seu app

O Google Play Services usa a string de hash para determinar qual verificação mensagens para enviar ao seu app. A string de hash é composta pelo nome do pacote do app e o certificado de chave pública do app. Para gerar a string de hash:

  1. Se você usa a Assinatura de apps do Google Play, faça o download do certificado de assinatura de apps (deployment_cert.der) no Seção Assinatura de apps do Google Play Console.

    Em seguida, importe o certificado de assinatura do app para um armazenamento de chaves temporário:

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    Se você assinar os APKs diretamente, pule esta etapa.

  2. Acesse o certificado de assinatura do app, seja o que você importou acima ou aquele que você usa para assinar seus APKs diretamente, como uma string hexadecimal em letras minúsculas.

    Por exemplo, para obter a string hexadecimal do keystore temporário criado acima, digite o seguinte comando:

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    Se você assinar os APKs diretamente, especifique seu keystore de produção e alias do certificado.

  3. Se você criou um keystore temporário, exclua-o.

  4. Anexe a string hexadecimal ao nome do pacote do seu app, separada por uma única espaço.

  5. Calcule a soma de SHA-256 da string combinada. Não se esqueça de remover o espaço em branco à esquerda ou à direita da string antes de calcular o SHA-256 soma

  6. Codifique o valor binário da soma de SHA-256 em Base64. Talvez seja necessário decodificar primeiro a soma de SHA-256 pelo formato de saída.

  7. A string de hash do seu app são os 11 primeiros caracteres da string codificada em base64 hash.

O comando a seguir calcula a string de hash da produção do seu aplicativo repositório de chaves:

keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

Como alternativa, você pode receber a string de hash do seu app com o recurso AppSignatureHelper. do app de exemplo SMS retriever. No entanto, se você usar a classe auxiliar, remova-a do app depois de receber a string hash. Não use strings de hash calculadas dinamicamente no cliente nas mensagens de verificação.

2. Enviar a mensagem de verificação por SMS

Depois de criar a mensagem de verificação, envie-a para o número de telefone por qualquer sistema de SMS.

Por exemplo, consulte Verificação de app usando o Twilio SMS. no site para desenvolvedores do Twilio.

Quando o dispositivo do usuário recebe essa mensagem, ela é direcionada para seu app. O aplicativo extrai o código único e o envia de volta ao servidor para concluir o processo de verificação.

3. Verifique o código de uso único quando ele for retornado

Um servidor de verificação do número de telefone geralmente tem um segundo endpoint que usa para receber códigos únicos de apps clientes. Quando o servidor recebe um código único do seu app nesse endpoint, faça o seguinte:

  1. Verifique se o código de uso único é válido e não expirou.
  2. Anote que o usuário vinculado ao código único preencheu o número de telefone verificação.
  3. Remova o registro do banco de dados do código único ou, de outra maneira, garanta que o mesmo código não poderá ser usado novamente.

Quando você registra o status de verificação do usuário e remove o código único seu banco de dados, a verificação foi concluída.