Esecuzione della verifica SMS su un server

Per verificare automaticamente i numeri di telefono, devi implementare sia il client che parti del server durante il flusso di verifica. Questo documento descrive come di implementare la parte del server.

Il server di verifica telefonica è responsabile di tre attività:

  1. Costruire un messaggio di verifica che includa un codice monouso e che il formato previsto dall'API SMS Retriever lato client.
  2. Invio del messaggio di verifica al dispositivo dell'utente
  3. Verifica del codice monouso quando viene restituito al server e viene completato Qualsiasi attività successiva alla verifica richiesta dal backend

Sei tu a decidere le modalità di interazione della tua app con il server. Un comune consiste nell'esporre un'API REST con due endpoint: uno che riceve richieste per verificare un determinato numero di telefono, inviando i messaggi di verifica SMS e un secondo endpoint che riceve codici monouso dalla tua app.

1. Costruire un messaggio di verifica

Quando il tuo server riceve una richiesta di verifica di un numero di telefono, inizia a creare il messaggio di verifica che invierai al dispositivo dell'utente. Questo messaggio devono:

In caso contrario, puoi scegliere il contenuto del messaggio di verifica. È utile creare un messaggio da cui estrarre facilmente il messaggio il codice in un secondo momento. Ad esempio, un messaggio di verifica valido potrebbe avere il seguente aspetto seguenti:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Generazione di un codice monouso

Puoi implementare i codici monouso in molti modi, a condizione che siano non identificabile e puoi collegare i codici a un utente o a un numero di telefono quando il client l'app li invia al tuo server. Dovresti fare in modo che i codici siano facili da digitare, situazioni che potrebbero richiedere agli utenti di digitare manualmente il codice.

Un modo per implementare i codici monouso è generare numeri casuali, che puoi utilizzare come chiavi in una tabella di database. Ad esempio, potresti avere uno stato In sospeso simile alla seguente:

ID Utente Scadenza
123456789... 1234 14-3-2017 1:59

Puoi utilizzare l'ID con codifica base32 come codice monouso.

Calcolo della stringa hash dell'app in corso...

Google Play Services utilizza la stringa hash per stabilire quale verifica messaggi da inviare alla tua app. La stringa hash è composta dal nome del pacchetto dell'app e il certificato di chiave pubblica dell'app. Per generare la stringa hash:

  1. Se utilizzi la firma dell'app di Google Play: scarica il certificato di firma dell'app (deployment_cert.der) dal Sezione Firma dell'app di Google Play Console.

    Quindi, importa il certificato di firma dell'app in un archivio chiavi temporaneo:

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

    Se firmi direttamente gli APK, salta questo passaggio.

  2. Richiedi il certificato di firma dell'app, quello importato sopra oppure quella che usi per firmare direttamente gli APK, sotto forma di stringa esadecimale minuscola.

    Ad esempio, per ottenere la stringa esadecimale dall'archivio chiavi temporaneo creato sopra, digita il seguente comando:

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

    Se firmi direttamente gli APK, specifica il tuo archivio chiavi di produzione e alias del certificato.

  3. Se hai creato un archivio chiavi temporaneo, eliminalo.

  4. Aggiungi la stringa esadecimale al nome del pacchetto dell'app, separata da un singolo spazio.

  5. Calcola la somma SHA-256 della stringa combinata. Assicurati di rimuovere eventuali spazio vuoto iniziale o finale della stringa prima di calcolare l'algoritmo SHA-256 somma.

  6. Codifica Base64 del valore binario della somma SHA-256. Potresti dover decodificare la somma SHA-256 del formato di output.

  7. La stringa hash dell'app è composta dai primi 11 caratteri della codifica Base64 hash.

Il seguente comando calcola la stringa hash dalla versione di produzione della tua app archivio chiavi:

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

In alternativa, puoi ottenere la stringa hash dell'app con AppSignatureHelper dell'app di esempio SMS retriever. Tuttavia, se utilizzi il corso helper, assicurati di rimuoverla dall'app dopo aver ricevuto la stringa hash. Non utilizzare stringhe hash calcolate in modo dinamico sul client nei messaggi di verifica.

2. Invia il messaggio di verifica via SMS

Dopo aver creato il messaggio di verifica, invialo all'indirizzo numero di telefono tramite qualsiasi sistema SMS.

Ad esempio, consulta Verifica app utilizzando Twilio SMS. sul sito per sviluppatori di Twilio.

Quando il dispositivo dell'utente riceve questo messaggio, quest'ultimo viene indirizzato al tuo dell'app. L'app estrae il codice monouso e lo invia al tuo server per completa la procedura di verifica.

3. Verifica il codice monouso quando viene restituito

Un server di verifica del numero di telefono di solito ha un secondo endpoint che utilizza per ricevere codici monouso dalle app client. Quando il server riceve codice monouso della tua app a questo endpoint:

  1. Verifica che il codice monouso sia valido e che non sia scaduto.
  2. Registra che l'utente collegato al codice monouso ha completato il numero di telefono. verifica.
  3. Rimuovi il record del database del codice monouso o, in qualche altro modo, assicurati che lo stesso codice non può essere riutilizzato.

Quando registri lo stato della verifica dell'utente e rimuovi il codice monouso da il database, la verifica è stata completata.