Aby zintegrować Smart Lock na hasła z aplikacją na Androida, musisz dodać wywołania interfejsu Credentials API do procesu uruchamiania aplikacji i logowania się w niej. Poniższy diagram przedstawia przepływ typowej aplikacji na Androida, która używa funkcji Smart Lock na hasła.
Istnieje wiele sposobów na zintegrowanie Smart Lock na hasła, a sposób integracji zależy od struktury i wygody użytkownika aplikacji. Jednak w przypadku większości z nich zalecamy ten proces. Aplikacje, które korzystają z tego procesu, mają następujące zalety:
- Obecni użytkownicy usługi, którzy mają zapisane pojedyncze dane logowania, są od razu zalogowani i otwierają aplikację bezpośrednio po otwarciu.
- Użytkownicy, którzy mają zapisanych wiele danych logowania lub wyłączą automatyczne logowanie, muszą odpowiedzieć na jedno okno, zanim przejdą do widoku logowania w aplikacji.
- Użytkownicy, którzy nie mają zapisanych danych logowania lub nie mają jeszcze zarejestrowanych kont, mogą jednym kliknięciem wybrać swoją nazwę użytkownika i adres e-mail, a następnie rozsądnie przekierować ich do widoku logowania lub rejestracji, gdzie zostaną wstępnie wypełnione te informacje.
- Gdy użytkownik się wyloguje, aplikacja zapewnia, że nie zostanie ona automatycznie wylogowana.
Pobieranie danych logowania
- Jeśli po uruchomieniu aplikacji nikt nie jest jeszcze zalogowany, wywołaj numer
CredentialsClient.request()
. - Jeśli
Task
się uda, pobierz dane logowania użytkownika za pomocągetResult().getCredential()
i użyj ich do zalogowania. - Jeśli
Task
się nie powiedzie, a wyjątek jest wystąpieniem elementuResolvableApiException
, agetStatusCode()
zwraca wartośćRESOLUTION_REQUIRED
, dane logowania użytkownika są wymagane do wybrania danych logowania. Wywołaj poleceniestartResolutionForResult()
, aby poprosić użytkownika o wybranie zapisanego konta, a potem wywołaj metodęgetParcelableExtra(Credential.EXTRA_KEY)
, aby uzyskać dane logowania użytkownika i użyć go do zalogowania.
Zapisz dane logowania
Jeśli
Task
kończy się niepowodzeniem za pomocąApiException
igetStatusCode()
zwracaSIGN_IN_REQUIRED
, użytkownik nie ma zapisanych danych logowania i musi się zalogować lub zarejestrować ręcznie za pomocą bieżącego procesu logowania lub rejestracji. Gdy użytkownik się zaloguje, możesz umożliwić mu zapisanie danych logowania na potrzeby pobierania w przyszłości (krok 5).Możesz ułatwić użytkownikom logowanie się lub rejestrację szybciej, pobierając wskazówki logowania, takie jak adres e-mail użytkownika. Użytkownik może ją kliknąć i pominąć wpisywać dane logowania. Jeśli aplikacja wymaga od użytkowników zalogowania się, możesz pobrać wskazówki natychmiast po nieudanym żądaniu logowania. W przeciwnym razie możesz poczekać, aż użytkownik rozpocznie proces logowania lub rejestracji.
- Wywołaj
CredentialsClient.getHintPickerIntent()
i zacznij wyświetlać użytkownikowi prośbę o wybranie konta, a następnie wywołajgetParcelableExtra(Credential.EXTRA_KEY)
, by uzyskać wskazówkę na temat logowania. - Jeśli identyfikator użytkownika podpowiedzi pasuje do istniejącego użytkownika, wypełnij formularz logowania i pozwól użytkownikowi wpisać hasło, aby się zalogować.
- Jeśli identyfikator podany w przypadku podpowiedzi nie pasuje do istniejącego użytkownika, wypełnij wstępnie formularz rejestracyjny o identyfikatorze i nazwie użytkownika, a następnie utwórz nowe konto.
- Wywołaj
-
Gdy użytkownik się zaloguje 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 identyfikator i określ dostawcę tożsamości za pomocą atrybutusetAccountType
.
Wyloguj się
- Gdy użytkownik się wyloguje, wywołaj funkcję
CredentialsClient.disableAutoSignIn()
, aby zapobiec natychmiastowemu wylogowaniu użytkownika. Wyłączenie automatycznego logowania zapewnia też użytkownikom łatwe przełączanie się między kontami (np. osobistymi w pracy lub kontami na współdzielonych urządzeniach) bez konieczności ponownego wpisywania danych logowania.
Chcesz zintegrować Smart Lock na hasła z aplikacją? W takim razie zaczynajmy.