SMS-Bestätigung auf einem Server durchführen

Um Telefonnummern automatisch zu bestätigen, müssen Sie sowohl den Client als auch des Bestätigungsvorgangs an. In diesem Dokument wird beschrieben, wie Sie den Serverteil implementieren.

Der Server für die Überprüfung der Telefonnummer ist für drei Aufgaben verantwortlich:

  1. Bestätigungsnachricht erstellen, die einen Einmalcode und das Format, das die clientseitige SMS Retriever API erwartet
  2. Bestätigungsnachricht wird an das Gerät des Nutzers gesendet
  3. Einmalcode verifizieren, wenn er an den Server zurückgesendet wird, und alle Aufgaben nach der Bestätigung, die für Ihr Backend erforderlich sind

Wie Ihre App mit dem Server interagiert, liegt ganz bei Ihnen. Eine gemeinsame Der Ansatz besteht darin, eine REST API mit zwei Endpunkten bereitzustellen: einem, der Anfragen empfängt. , um eine bestimmte Telefonnummer zu verifizieren und SMS-Bestätigungsnachrichten zu senden, und eine Endpunkt, der Einmalcodes von deiner App empfängt.

1. Bestätigungsnachricht erstellen

Wenn Ihr Server eine Anfrage zur Bestätigung einer Telefonnummer erhält, erstellen Sie zunächst die Bestätigungsnachricht, die Sie an das Gerät des Nutzers senden. Diese Nachricht muss:

  • nicht länger als 140 Byte sein
  • Sie enthalten einen einmaligen Code, den der Client an Ihren Server zurücksendet, um den Bestätigungsvorgang abschließen (siehe Einmalcode generieren)
  • Geben Sie einen 11-stelligen Hash-String zur Identifizierung Ihrer Anwendung an (siehe Hash-String der App berechnen)

Andernfalls können Sie den Inhalt der Bestätigungsnachricht beliebig festlegen. Es ist hilfreich, eine Nachricht zu erstellen, aus der Sie die einmaligen Daten ganz einfach extrahieren können. Code hinzufügen. Eine gültige Bestätigungsnachricht könnte beispielsweise so aussehen: Folgendes:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Einmalcode generieren

Sie können Einmalcodes auf viele Arten implementieren, solange die Codes und Sie können die Codes mit einem Nutzer oder einer Telefonnummer verknüpfen, und App sie an Ihren Server zurücksendet. Achten Sie darauf, dass sich die Codes einfach eingeben lassen, Situationen berücksichtigen, in denen Nutzer den Code möglicherweise manuell eingeben müssen.

Eine Möglichkeit zur Implementierung von Einmalcodes ist die Generierung von Zufallszahlen, als Schlüssel in einer Datenbanktabelle. Beispiel: Sie haben eine ausstehende Bestätigung. wie in der folgenden Tabelle dargestellt:

ID Nutzer Ablauffrist
123456789... 1234 14.03.2017 13:59

Du kannst die base32-codierte ID als Einmalcode verwenden.

Hash-String der Anwendung berechnen

Google Play-Dienste bestimmen anhand des Hash-Strings, an Ihre App zu senden. Der Hash-String besteht aus dem Paketnamen Ihrer App. und das Public-Key-Zertifikat Ihrer App. So generieren Sie den Hash-String:

  1. Wenn Sie die App-Signatur von Google Play verwenden, Laden Sie Ihr App-Signaturzertifikat (deployment_cert.der) aus der Bereich App-Signatur in der Google Play Console

    Importieren Sie dann das App-Signaturzertifikat in einen temporären Schlüsselspeicher:

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

    Wenn Sie Ihre APKs direkt signieren, überspringen Sie diesen Schritt.

  2. Rufen Sie Ihr App-Signaturzertifikat ab – entweder das, das Sie oben importiert haben, oder die, mit der Sie Ihre APKs direkt signieren – als Hexadezimalstring in Kleinbuchstaben.

    Um beispielsweise den hexadezimalen String aus dem temporären Schlüsselspeicher abzurufen, der erstellt wurde, den folgenden Befehl ein:

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

    Wenn Sie Ihre APKs direkt signieren, geben Sie Ihren Produktionsschlüsselspeicher und Alias des Zertifikats an.

  3. Wenn Sie einen temporären Schlüsselspeicher erstellt haben, löschen Sie ihn.

  4. Hängen Sie den Hex-String an den Paketnamen Ihrer App getrennt durch ein einzelnes Leerzeichen.

  5. Berechnet die SHA-256-Summe des kombinierten Strings. Entfernen Sie alle vor- oder nachgestellten Leerzeichen im String, bevor SHA-256 berechnet wird Summe.

  6. Codieren Sie den Binärwert der SHA-256-Summe mit Base64. Möglicherweise müssen Sie zuerst die SHA-256-Summe aus seinem Ausgabeformat.

  7. Der Hash-String Ihrer Anwendung besteht aus den ersten 11 Zeichen der base64-codierten Hashwert.

Der folgende Befehl berechnet den Hash-String aus der Produktionsphase Ihrer Anwendung Schlüsselspeicher:

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

Alternativ können Sie den Hash-String Ihrer App mit dem AppSignatureHelper abrufen. aus der Beispiel-App "SMS Retriever". Wenn Sie jedoch die Hilfsklasse verwenden, müssen Sie sie aus Ihrer App entfernen, nachdem Sie den Hash-String erhalten haben. Nicht verwenden Hash-Strings, die dynamisch auf dem Client in Ihren Bestätigungsnachrichten berechnet werden.

2. Bestätigungsnachricht per SMS senden

Nachdem Sie die Bestätigungsnachricht erstellt haben, senden Sie die Nachricht an die Telefonnummer eines beliebigen SMS-Systems.

Ein Beispiel finden Sie unter Anwendungsüberprüfung mit Twilio SMS. auf der Entwicklerwebsite von Twilio.

Wenn das Gerät des Nutzers diese Nachricht erhält, wird sie an deinen Ihre App extrahiert den einmaligen Code und sendet ihn an Ihren Server zurück, führen Sie den Bestätigungsvorgang aus.

3. Einmalcode überprüfen, wenn er zurückgegeben wird

Ein Server für die Bestätigung von Telefonnummern hat in der Regel einen zweiten Endpunkt, den er verwendet um einmalige Codes von Client-Apps zu erhalten. Wenn Ihr Server ein einmalige Codes Ihrer Anwendung an diesem Endpunkt:

  1. Vergewissern Sie sich, dass der Einmalcode gültig und nicht abgelaufen ist.
  2. Erfassen, dass der Nutzer, der mit dem Einmalcode verknüpft ist, die Telefonnummer vollständig eingegeben hat Überprüfung.
  3. Entfernen Sie den Datenbankeintrag des Einmalcodes oder stellen Sie auf andere Weise sicher, dass kann der gleiche Code nicht noch einmal verwendet werden.

Wenn Sie den Bestätigungsstatus des Nutzers aufzeichnen und den Einmalcode aus dem Konto entfernen ist die Verifizierung abgeschlossen.