Weryfikacja SMS na serwerze

Aby automatycznie weryfikować numery telefonów, musisz zaimplementować zarówno klienta, jak i są związane z serwerem weryfikacji. W tym dokumencie opisujemy, jak i zaimplementuj serwer.

Serwer weryfikacji telefonicznej odpowiada za trzy zadania:

  1. Utworzenie wiadomości weryfikacyjnej, która zawiera jednorazowy kod i zawiera format, którego oczekuje interfejs SMS retriever API po stronie klienta
  2. Wysyłanie wiadomości weryfikacyjnej na urządzenie użytkownika
  3. Weryfikowanie kodu jednorazowego po wysłaniu z powrotem na serwer i zakończenie wszystkie działania po weryfikacji wymagane przez backend

Szczegóły interakcji aplikacji z serwerem zależą od Ciebie. Częstym podejściem jest udostępnienie interfejsu API REST z 2 punktami końcowymi: jednym, który odbiera żądania. aby zweryfikować dany numer telefonu i wysłać SMS-a weryfikacyjnego, drugi punkt końcowy, który odbiera jednorazowe kody z aplikacji.

1. Utwórz wiadomość weryfikacyjną

Gdy serwer otrzyma żądanie weryfikacji numeru telefonu, najpierw utwórz wiadomość weryfikacyjną, którą wyślesz na urządzenie użytkownika. Ta wiadomość musi:

W przeciwnym razie treść wiadomości weryfikacyjnej może być dowolna. Warto utworzyć wiadomość, z której można łatwo wyodrębnić jednorazową . Prawidłowa wiadomość weryfikacyjna może na przykład wyglądać tak: :

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Generowanie kodu jednorazowego

Kody jednorazowe możesz wdrożyć na wiele sposobów, o ile są one i można powiązać kody z użytkownikiem lub numerem telefonu, gdy klient wysyła je z powrotem do serwera. Kody powinny być łatwe do wpisania, uwzględnia wszelkie sytuacje, które mogą wymagać ręcznego wpisania kodu przez użytkownika.

Jednym ze sposobów implementacji kodów jednorazowych jest generowanie liczb losowych, jako klucze w tabeli bazy danych. Możesz na przykład mieć status PendingWeryfikacjas wygląda tak:

Identyfikator Użytkownik Wygaśnięcie
123456789... 1234 14.03.2017, 13:59

Możesz użyć identyfikatora zakodowanego w formacie base32 jako kodu jednorazowego.

Obliczam ciąg znaków skrótu aplikacji

Usługi Google Play używają ciągu skrótu do określania, która weryfikacja wiadomości, które chcesz wysłać do aplikacji. Ciąg haszujący składa się z nazwy pakietu aplikacji. oraz certyfikat klucza publicznego aplikacji. Aby wygenerować ciąg znaków skrótu:

  1. Jeśli korzystasz z podpisywania aplikacji przez Google Play, pobierz certyfikat podpisywania aplikacji (deployment_cert.der) ze strony Podpisywanie aplikacji w Konsoli Google Play.

    Następnie zaimportuj certyfikat podpisywania aplikacji do tymczasowego magazynu kluczy:

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

    Jeśli podpisujesz pliki APK bezpośrednio, pomiń ten krok.

  2. Pobierz certyfikat podpisywania aplikacji – zaimportowany powyżej lub używany do bezpośredniego podpisywania plików APK – w postaci ciągu szesnastkowego z małymi literami.

    Aby np. pobrać ciąg szesnastkowy z utworzonego tymczasowego magazynu kluczy, powyżej wpisz następujące polecenie:

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

    Jeśli podpisujesz pliki APK bezpośrednio, określ produkcyjny magazyn kluczy alias certyfikatu.

  3. Jeśli masz utworzony tymczasowy magazyn kluczy, usuń go.

  4. Dołącz ciąg szesnastkowy do nazwy pakietu aplikacji, oddzielając go pojedynczym znakiem kosmosu.

  5. Oblicz sumę SHA-256 połączonego ciągu znaków. Pamiętaj, aby usunąć wszelkie na początku lub na końcu ciągu znaków przed obliczeniem SHA-256 suma.

  6. Zakoduj wartość binarną sumy SHA-256 w formacie Base64. Może być konieczne zdekodowanie najpierw sumę SHA-256 z formatu wyjściowego.

  7. Ciąg haszujący aplikacji to pierwsze 11 znaków zakodowanego w base64 za pomocą skrótu.

To polecenie oblicza ciąg skrótu z środowiska produkcyjnego aplikacji magazyn kluczy:

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

Ciąg skrótu aplikacji możesz też uzyskać za pomocą funkcji AppSignatureHelper. z przykładowej aplikacji do pobierania SMS-ów. Jeśli jednak używasz klasy pomocniczej, pamiętaj, aby usunąć go z aplikacji po otrzymaniu ciągu skrótu. Nie używaj ciągi znaków skrótu dynamicznie obliczane na kliencie w wiadomościach weryfikacyjnych.

2. Wyślij wiadomość weryfikacyjną SMS-em

Po utworzeniu wiadomości weryfikacyjnej wyślij ją do użytkownika z użyciem dowolnego systemu SMS.

Zobacz na przykład Weryfikowanie aplikacji przy użyciu Twilio SMS. w witrynie dla deweloperów Twilio.

Gdy urządzenie użytkownika otrzyma tę wiadomość, jest ona kierowana na . Aplikacja wyodrębnia jednorazowy kod i wysyła go z powrotem na serwer do przejść proces weryfikacji.

3. Zweryfikuj jednorazowy kod po jego zwróceniu

Serwer weryfikacji numeru telefonu zwykle ma drugi punkt końcowy, z którego korzysta otrzymywania jednorazowych kodów z aplikacji klienckich. Gdy serwer odbiera jednorazowy kod z aplikacji w tym punkcie końcowym, wykonaj te czynności:

  1. Sprawdź, czy jednorazowy kod jest prawidłowy i nie wygasł.
  2. Zarejestruj, że użytkownik powiązany z kodem jednorazowym uzupełnił numer telefonu weryfikacji.
  3. Usuń rekord bazy danych kodu jednorazowego lub w inny sposób upewnij się, że nie można ponownie użyć tego samego kodu.

Gdy zarejestrujesz stan weryfikacji użytkownika i usuniesz kod jednorazowy z konta Twojej bazy danych, weryfikacja została zakończona.