Wyobraź sobie aplikację, w której potrzebujesz potwierdzić rejestrację lub numer telefonu za pomocą SMS-a. Wydaje się dość skomplikowane, ale to tylko pozory. Dziś na warsztat weżniemy właśnie ten temat. Weryfikacja za pomocą SMS-a jest popularna wśród różnych serwisów czy aplikacji mobilnych. Jest to również mechanizm bezpieczeństwa, na przykład w aplikacjach bankowych.

1. Jak to działa?

  1. Musisz pobrać nr telefonu od użytkownika.
  2. Zarejestrować usługę, która będzie nadsłuchiwała na przyjście SMS-a.
  3. Przesłać numer telefonu na serwer OTP, który wyśle SMS-a.
  4. Wysłać SMS-a z poufnym kodem.
  5. Odebrać SMS-a na telefonie.
  6. Wysłać kod z SMS-a + nr tel na serwer. w celu weryfikacji.
  7. Wykonać odpowiednią akcję w aplikacji po weryfikacji.
  8. Wyrejestrować usługę, która nadsłuchuje.

Wydaje się dość skomplikowane, w kodzie jest jeszcze prościej….

2. Weryfikacja sms-a w androdzie.

Jeżeli zdobyłeś numer telefonu to teraz musisz zarejestrować SMS retriever w następujący sposób:

Następnie musimy zarejestrować broadcast, który będzie nadsłuchiwał na przyjście wiadomości:

Przykładowa klasa MySMSBroadcastReceiver może wyglądać następująco:

Jeszcze implementacja interfejsu:

Kod po stronie aplikacji można powiedzieć, że mamy gotowy. Teraz trzeba wysłać nr telefonu na serwer i przygotować odpowiedniego SMS-a. Treść wiadomości powinna spełniać następujące warunki:

  • Początek wiadomości musi zawierać <#> lub \u200b\u200b. Pierwszy to widoczny przedrostek, który pojawi się w treści wiadomości, a drugi jest niewidocznym łańcuchem Unicode, ale wymaga obsługi standardu Unicode.
  • Treść wiadomości nie może przekraczać 140 bajtów.
  • Zawiera kod jednorazowy.
  • I specjalny 11-znakowy skrót dla twojej aplikacji. Ten hash może być wygenerowany przez tę klasę lub w ten sposób.
  • Reszta treści jest opcjonalna.

Przykładowa treść może wyglądać następująco:

<#> Your code is: 58628 NcZLqx+vXTu

3. Android Oreo na ratunek.

Powyższa metoda działa. Niestety nie jest do końca bezpieczna, ponieważ aplikację, które mają dostęp do czytania SMS-a mogą odczytać kod weryfikacyjny. W androidzie O wprowadzono metodę createAppSpecificSmsToken, która generuje specjalny token, który działa do przyjścia SMS-a. Po odebraniu wiadomości tylko aplikacja zareaguje na tą wiadomość. Inne aplikacje nie dowiedzą się, że przyszedł SMS.

Kod zadziała nawet po zamknięciu aplikacji. Gdy wygenerujesz specjalny token wysyłać go do serwera OTP, który następnie wysyła SMS-a z tyn tokenem. Gdy nadejdzie wiadomość system android wywoła klasę SmsTokenResultActivity. W niej możesz odebrać wiadomość w taki sposób:

4. Podsumowanie.

Weryfikacja SMS w systemie android jest prosta i skuteczna. Nie wymaga uprawnień SMS, a to jest duży plus. Jedynie co potrzebujesz to system android z usługą Google Play Services.

Zapraszam do komentowania. Jeżeli uważasz, że treść jest wartościowa, udostępnij wpis dalej, a na pewno pomoże innym w zdobywaniu wiedzy. Dzięki.

Miłego kodowania 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *