Proces integracji z Androidem

Aby zintegrować funkcję Smart Lock na hasła z aplikacją na Androida, podczas uruchamiania i logowania się musisz dodać wywołania interfejsu Credentials API. Poniższy diagram przedstawia przepływ typowej aplikacji na Androida, która korzysta z funkcji Smart Lock na hasła.

Istnieje wiele sposobów integracji funkcji Smart Lock na hasła, a jej działanie zależy od struktury i wygody użytkowników aplikacji, w przypadku większości aplikacji zalecamy wykonanie poniższego procesu. Aplikacje korzystające z tego procesu mają następujące zalety:

  • Obecni użytkownicy usługi, którzy mają zapisane pojedyncze dane logowania, zostaną natychmiast zalogowani i po otwarciu aplikacji zostaną przekierowani bezpośrednio do widoku danych zalogowanych użytkowników.
  • Użytkownicy, którzy mają zapisanych wiele danych logowania lub mają wyłączone automatyczne logowanie, muszą odpowiedzieć tylko na jedno okno, zanim przejdą do widoku logowania w aplikacji.
  • Użytkownicy, którzy nie mają zapisanych danych logowania lub jeszcze się nie zarejestrowali, mogą za pomocą jednego kliknięcia wybrać imię i nazwisko oraz adres e-mail. Te informacje zostaną uzupełnione w widoku danych logowania lub rejestracji.
  • Aplikacja sprawia, że gdy użytkownik się wyloguje, nie jest zalogowany automatycznie.

Schemat procesu logowania się za pomocą funkcji Smart Lock

Pobieranie danych logowania

  1. Jeśli żaden użytkownik nie jest zalogowany, po uruchomieniu aplikacji wywołaj CredentialsClient.request().
  2. Jeśli Task zadziała, uzyskaj dane logowania użytkownika za pomocą getResult().getCredential() i użyj ich do zalogowania się.
  3. Jeśli Task kończy się niepowodzeniem, a wyjątkiem jest wystąpienie ResolvableApiException, a getStatusCode() zwraca RESOLUTION_REQUIRED, do wyboru danych logowania wymagane są dane wejściowe użytkownika. Wywołaj startResolutionForResult(), aby poprosić użytkownika o wybranie zapisanego konta, a następnie getParcelableExtra(Credential.EXTRA_KEY), aby uzyskać dane logowania użytkownika i użyć ich do zalogowania się.

Zapisz dane logowania

  1. Jeśli Task zakończy się niepowodzeniem za pomocą ApiException, a getStatusCode() zwróci SIGN_IN_REQUIRED, użytkownik nie będzie miał zapisanych danych logowania i będzie musiał zalogować się albo zarejestrować ręcznie, korzystając z obecnego procesu logowania lub rejestracji. Gdy użytkownik się zaloguje, możesz mu umożliwić zapisanie danych logowania, aby mógł odzyskać dostęp do niego w przyszłości (krok 5).

    Możesz ułatwić i przyspieszyć logowanie lub rejestrację użytkownika, pobierając wskazówki dotyczące logowania, takie jak adres e-mail użytkownika. Użytkownik może wybrać podpowiedź i pominąć wpisywanie danych logowania. Jeśli Twoja aplikacja wymaga od użytkowników logowania się, możesz pobrać wskazówki natychmiast po tym, gdy nie uda się zrealizować wstępnego żądania danych logowania (w przeciwnym razie możesz zaczekać, aż użytkownik rozpocznie proces logowania lub rejestracji).

    1. Wywołaj metodę CredentialsClient.getHintPickerIntent() i rozpocznij intencję, aby zachęcić użytkownika do wybrania konta, a następnie wywołaj getParcelableExtra(Credential.EXTRA_KEY), aby uzyskać wskazówkę dotyczącą logowania.
    2. Jeśli identyfikator użytkownika wskazywany przez wskazówkę jest taki sam jak identyfikator istniejącego użytkownika, wypełnij wstępnie formularz logowania i pozwól mu wpisać hasło, aby się zalogować.
    3. Jeśli identyfikator użytkownika wskazywany przez wskazówkę nie jest zgodny z istniejącym użytkownikiem, wypełnij wstępnie formularz rejestracyjny identyfikatorem i nazwą użytkownika, a następnie pozwól mu utworzyć nowe konto.
  2. Gdy użytkownik zaloguje się lub utworzy konto, zapisz jego identyfikator i hasło w CredentialsClient.save().

    Jeśli użytkownik zalogował się przy użyciu sfederowanego dostawcy tożsamości, takiego jak Logowanie przez Google, utwórz obiekt Credential z adresem e-mail użytkownika jako identyfikatorem i określ dostawcę tożsamości za pomocą setAccountType.

Wyloguj się

  1. Gdy użytkownik się wyloguje, wywołaj CredentialsClient.disableAutoSignIn(), aby zapobiec ponownemu zalogowaniu się użytkownika. Wyłączenie automatycznego logowania umożliwia też użytkownikom łatwe przełączanie się między kontami – na przykład między kontami służbowymi i osobistymi oraz między kontami na współdzielonych urządzeniach – bez konieczności ponownego wpisywania danych logowania.

Chcesz zintegrować Smart Lock na hasła ze swoją aplikacją? W takim razie zaczynajmy.