Proces integracji z Androidem

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

Smart Lock na hasła można zintegrować na wiele sposobów, a jego specyfikacja zależy od struktury i wygody użytkowników aplikacji, jednak w przypadku większości aplikacji zalecamy wykonanie poniższego procesu. Aplikacje z takim procesem mają następujące zalety:

  • Obecni użytkownicy Twojej usługi, którzy mają zapisane pojedyncze dane logowania, są od razu zalogowani i po otwarciu aplikacji zostaną od razu przekierowani do tego widoku.
  • Użytkownicy, którzy mają zapisanych wiele danych logowania lub mają wyłączone automatyczne logowanie, muszą odpowiedzieć tylko w jednym oknie, zanim przejdą do widoku logowania w aplikacji.
  • Użytkownicy, którzy nie mają zapisanych danych logowania lub jeszcze się nie zarejestrowali, mogą wybrać swoje imię i nazwisko oraz adres e-mail jednym kliknięciem i zostać kierowani do widoku rejestracji lub logowania z wstępnie wypełnionymi danymi.
  • Gdy użytkownik się wyloguje, aplikacja dba o to, aby nie była automatycznie logowana ponownie.

Schemat procesu logowania się za pomocą funkcji Smart Lock

Pobieranie danych logowania

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

Zapisz dane logowania

  1. Jeśli żądanie Task zakończy się niepowodzeniem z użyciem ApiException, a getStatusCode() zwróci SIGN_IN_REQUIRED, użytkownik nie ma zapisanych danych logowania, więc będzie musiał zalogować się lub zarejestrować ręcznie, korzystając z bieżącego procesu logowania lub rejestracji. Gdy użytkownik się zaloguje, możesz umożliwić mu zapisanie danych logowania do późniejszego pobrania (krok 5).

    Możesz pomóc użytkownikowi szybciej i łatwiej się zalogować lub zarejestrować, 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 wybrać pobieranie wskazówek natychmiast po tym, gdy wstępne żądanie danych logowania się nie powiedzie (w przeciwnym razie możesz poczekać, aż użytkownik rozpocznie proces logowania lub rejestracji).

    1. Wywołaj CredentialsClient.getHintPickerIntent() i uruchom intencję, by zachęcić użytkownika do wybrania konta, a następnie wywołaj getParcelableExtra(Credential.EXTRA_KEY), by uzyskać wskazówkę dotyczącą logowania.
    2. Jeśli identyfikator użytkownika przypisany do podpowiedzi jest zgodny z identyfikatorem istniejącego użytkownika, wypełnij wstępnie formularz logowania i pozwól użytkownikowi wpisać hasło, aby się zalogować.
    3. Jeśli identyfikator użytkownika, którego dotyczy wskazówka, nie pasuje do istniejącego użytkownika, wypełnij wstępnie formularz rejestracyjny identyfikatorem i nazwą użytkownika, a następnie pozwól użytkownikowi utworzyć nowe konto.
  2. Gdy użytkownik zaloguje się lub utworzy konto, zapisz identyfikator użytkownika i hasło w CredentialsClient.save().

    Jeśli użytkownik zalogował się przy użyciu dostawcy sfederowanej 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 w setAccountType.

Wyloguj się

  1. Gdy użytkownik się wyloguje, wywołaj funkcję CredentialsClient.disableAutoSignIn(), by uniemożliwić użytkownikowi natychmiastowe ponowne zalogowanie się. 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.