Za pomocą Firebase Authentication możesz zalogować użytkownika, wysyłając SMS-a do telefonu użytkownika. Użytkownik loguje się za pomocą jednorazowego kodu zawartego w SMS.
W tym dokumencie opisujemy, jak wdrożyć proces logowania się przy użyciu numeru telefonu za pomocą pakiet SDK Firebase.
Zanim zaczniesz
-
Zanim będzie można użyć Firebase Authentication musisz dodać pakiet SDK Firebase Unity (w szczególności
FirebaseAuth.unitypackage
) w swoim projekcie Unity.Szczegółowe instrukcje dotyczące wstępnych kroków konfiguracji znajdziesz tutaj: Dodaj Firebase do swojej platformy Unity projektu.
- Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, zrób to na stronie konsolę Firebase.
- Zapoznaj się z wymaganiami platformy dotyczącymi logowania się za pomocą numeru telefonu:
- Logowanie się za pomocą numeru telefonu jest możliwe tylko na platformach mobilnych.
- W systemie iOS logowanie się za pomocą numeru telefonu wymaga fizycznego urządzenia i nie działa na symulatorze.
Potencjalne problemy z bezpieczeństwem
Uwierzytelnianie przy użyciu numeru telefonu, choć jest wygodne, jest mniej bezpieczne niż inne dostępne metody, ponieważ posiadanie numeru telefonu można łatwo przenosić między użytkownikami. Także na urządzeniach z wieloma użytkownikami profili, każdy użytkownik, który może odbierać wiadomości SMS, może zalogować się na konto przy użyciu z numerem telefonu urządzenia.
Jeśli w aplikacji korzystasz z logowania się na podstawie numeru telefonu, z bezpieczniejszymi metodami logowania oraz informować użytkowników logowanie się przy użyciu numeru telefonu.
Włączanie logowania się za pomocą numeru telefonu w projekcie Firebase
Aby logować użytkowników za pomocą SMS-ów, musisz najpierw włączyć logowanie się przy użyciu numeru telefonu do swojego projektu Firebase:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na stronie Sign-in Method (Metoda logowania) włącz Phone Number. metody logowania się.
Zacznij otrzymywać powiadomienia APNs (tylko iOS)
Aby korzystać z uwierzytelniania na podstawie numeru telefonu w systemie iOS, aplikacja musi mieć możliwość odbierania Powiadomienia APNs z Firebase. Gdy logujesz użytkownika za pomocą telefonu po raz pierwszy na urządzeniu, Firebase Authentication wysyła ciche push powiadomienie na urządzenie, by potwierdzić, że przyszła prośba o zalogowanie się na numer telefonu z aplikacji. (Z tego powodu logowania na podstawie numeru telefonu nie można używać w ).
Aby włączyć powiadomienia APNs na potrzeby usługi Firebase Authentication:
- W Xcode włączyć powiadomienia push w projekcie.
Prześlij certyfikat APNs do Firebase. Jeśli nie masz jeszcze certyfikatu APNs, utwórz go w Apple Developer Member Center
-
W projekcie w konsoli Firebase wybierz ikona koła zębatego, wybierz Ustawienia projektu i wybierz Komunikacja w chmurze.
-
Wybierz Prześlij certyfikat. certyfikatu programistycznego, certyfikatu produkcji lub obu tych rodzajów danych. Co najmniej 1
-
Dla każdego certyfikatu wybierz plik .p12 i wskaż i hasło. Sprawdź, czy identyfikator pakietu tego certyfikatu pasuje do identyfikatora pakietu Twojej aplikacji. Wybierz Zapisz.
-
Wysyłanie kodu weryfikacyjnego na telefon użytkownika
Aby rozpocząć logowanie za pomocą numeru telefonu, użyj interfejsu z prośbą o wyświetlenie prośby
podać swój numer telefonu, a następnie zadzwonić
PhoneAuthProvider.VerifyPhoneNumber
, aby poprosić Firebase o sprawdzenie,
wyślij SMS-a z kodem uwierzytelniającym na telefon użytkownika:
-
Uzyskaj numer telefonu użytkownika.
Wymagania prawne są różne, ale jest to sprawdzona metoda i określać oczekiwania użytkowników, należy ich poinformować, przez telefon, mogą otrzymać SMS-a w celu weryfikacji i standardowego obowiązują opłaty.
- Zadzwoń pod numer
PhoneAuthProvider.VerifyPhoneNumber
i przekaż mu element PhoneAuthOptions zawierający numer telefonu użytkownika. Gdy zadzwonisz do:PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth); provider.VerifyPhoneNumber( new Firebase.Auth.PhoneAuthOptions { PhoneNumber = phoneNumber, TimeoutInMilliseconds = phoneAuthTimeoutMs, ForceResendingToken = null }, verificationCompleted: (credential) => { // Auto-sms-retrieval or instant validation has succeeded (Android only). // There is no need to input the verification code. // `credential` can be used instead of calling GetCredential(). }, verificationFailed: (error) => { // The verification code was not sent. // `error` contains a human readable explanation of the problem. }, codeSent: (id, token) => { // Verification code was successfully sent via SMS. // `id` contains the verification id that will need to passed in with // the code from the user when calling GetCredential(). // `token` can be used if the user requests the code be sent again, to // tie the two requests together. }, codeAutoRetrievalTimeout: (id) => { // Called when the auto-sms-retrieval has timed out, based on the given // timeout parameter. // `id` contains the verification id of the request that timed out. });
PhoneAuthProvider.VerifyPhoneNumber
, Firebase,- (w iOS) wysyła do aplikacji ciche powiadomienie push.
- Firebase wysyła SMS-a z uwierzytelnianiem. na podany numer telefonu i przekazuje identyfikator weryfikacyjny na funkcji uzupełniania. Będziesz potrzebować obu kodów weryfikacyjnych i identyfikator weryfikacyjny do zalogowania użytkownika.
-
Zapisz identyfikator weryfikacyjny i przywróć go po załadowaniu aplikacji. Dzięki temu możesz sprawdzić, czy Twoja aplikacja jest nadal ważnym identyfikatorem weryfikacyjnym. kończy się, zanim użytkownik zakończy proces logowania (na przykład na aplikację do SMS-ów).
Identyfikator weryfikacyjny możesz zachować w dowolny sposób. Prostym sposobem jest zapisz identyfikator weryfikacyjny w
UnityEngine.PlayerPrefs
.
Jeśli wywołanie zwrotne przekazane do codeSent
jest wywoływane, można
poproś użytkownika o wpisanie kodu weryfikacyjnego po otrzymaniu go SMS-em
.
Jeśli natomiast wywołanie zwrotne dla verificationCompleted
to
oznacza to, że automatyczna weryfikacja się powiodła i będziesz mieć
PhoneAuthCredential
, z których można korzystać w sposób opisany poniżej.
Logowanie użytkownika za pomocą kodu weryfikacyjnego
Gdy użytkownik poda aplikacji kod weryfikacyjny z SMS-a
zaloguj użytkownika, tworząc PhoneAuthCredential
z kodu weryfikacyjnego i identyfikatora weryfikacji
i przekazując ten obiekt,
do: FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync
.
- Uzyskaj kod weryfikacyjny od użytkownika.
- Tworzenie obiektu
Credential
z weryfikacji i identyfikatora weryfikacji.PhoneAuthCredential credential = phoneAuthProvider.GetCredential(verificationId, verificationCode);
- Zaloguj użytkownika za pomocą obiektu
PhoneAuthCredential
:auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } FirebaseUser newUser = task.Result.User; Debug.Log("User signed in successfully"); // This should display the phone number. Debug.Log("Phone number: " + newUser.PhoneNumber); // The phone number providerID is 'phone'. Debug.Log("Phone provider ID: " + newUser.ProviderId); });
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika. powiązane z danymi logowania, czyli z nazwą użytkownika, hasłem i numerem telefonu, numer telefonu lub informacje o dostawcy uwierzytelniania – użytkownik zalogowany. Ten nowy jest przechowywane w ramach projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od tego, jak się loguje.
-
W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z Obiekt
Firebase.Auth.FirebaseUser
:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
Na liście Firebase Realtime Database i Cloud Storage regułami zabezpieczeń, pobierz ze zmiennej
auth
unikalny identyfikator zalogowanego użytkownika, i używać ich do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu wielokrotnego uwierzytelniania. dostawców, łącząc dane logowania dostawcy uwierzytelniania z istniejącego konta użytkownika.
Aby wylogować użytkownika, wywołaj
SignOut()
:
auth.SignOut();