Przywracanie danych logowania do aplikacji podczas konfigurowania nowego urządzenia

Funkcja Przywróć dane logowania w Menedżerze danych logowania umożliwia użytkownikom przywracanie kont aplikacji podczas konfigurowania nowego urządzenia. Ten interfejs API jest dostępny w wersji przedpremierowej i działa na wszystkich urządzeniach z Androidem 9 lub nowszym oraz z Usługami Google Play w wersji 242200000 lub nowszej. Zalety funkcji przywracania danych logowania:

  • Łatwa obsługa: użytkownicy mogą przywrócić konto aplikacji bez konieczności ręcznego logowania się w każdej aplikacji.
  • Większe zaangażowanie użytkowników: użytkownicy chętniej korzystają z Twojej aplikacji, jeśli mogą przywrócić swoje konto podczas konfigurowania nowego urządzenia.
  • Mniejsze nakłady na programowanie: funkcja przywracania danych logowania jest zintegrowana z Menedżerem danych logowania, więc deweloperzy, którzy obsługują już klucze dostępu, mogą dodać funkcje przywracania danych logowania.

Jak to działa

Za pomocą funkcji Przywróć dane logowania możesz tworzyć, pobierać i usuwać odpowiednie dane logowania.

  1. Utwórz dane logowania do przywracania: gdy użytkownik zaloguje się w Twojej aplikacji, utwórz dane logowania do przywracania powiązane z jego kontem. Te dane logowania są przechowywane lokalnie i synchronizowane z chmurą, jeśli użytkownik włączył kopię zapasową Google i dostępne jest szyfrowanie end-to-end (aplikacje mogą zrezygnować z synchronizacji z chmurą).
  2. Pobieranie poświadczeń przywracania: gdy użytkownik skonfiguruje nowe urządzenie, aplikacja może poprosić Menedżera poświadczeń o poświadczenia przywracania. Dzięki temu możesz automatycznie logować użytkownika bez konieczności wprowadzania dodatkowych danych.
  3. Wyczyść dane logowania do przywracania: gdy użytkownik wyloguje się z aplikacji, usuń powiązane z nim dane logowania do przywracania.

Funkcja przywracania danych logowania może być łatwo zintegrowana z systemami backendu, które już wdrożyły klucze dostępu. Ta zgodność wynika z faktu, że zarówno klucze dostępu, jak i klucze przywracania (typ danych logowania używany przez funkcję Przywróć dane logowania) są zgodne z tymi samymi specyfikacjami technicznymi. To dopasowanie zapewnia, że proces przywracania danych logowania może skutecznie pobierać i przywracać dane logowania użytkownika przechowywane w systemach obsługujących klucze dostępu, co zapewnia spójne i przyjazne dla użytkownika działanie na różnych platformach i w przypadku różnych metod uwierzytelniania.

Plansza dolna Menedżera danych logowania
Rysunek 1. Diagram przedstawiający przywracanie danych aplikacji na nowe urządzenie za pomocą danych logowania do przywracania, w tym tworzenie danych logowania, inicjowanie procesu przywracania i automatyczne logowanie użytkownika.
nie są obsługiwane.

Implementacja

Interfejs Restore Credentials API jest dostępny w bibliotece Jetpack Menedżera poświadczeń. Aby zacząć go używać, wykonaj te czynności:

  1. Dodaj do projektu zależność Credential Manager.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Utwórz obiekt CreateRestoreCredentialRequest.

  3. Wywołaj metodę createCredential() na obiekcie CredentialManager.

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    Wygenerowane dane logowania do przywracania to typ danych logowania WebAuthn, znany jako klucz przywracania.

  4. Gdy użytkownik skonfiguruje nowe urządzenie, wywołaj metodę getCredential() na obiekcie CredentialManager.

    // Fetch the Authentication JSON from server
    val authenticationJson = fetchAuthenticationJson()
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(listOf(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. Gdy użytkownik wyloguje się z aplikacji, wywołaj metodę clearCredentialState() na obiekcie CredentialManager.

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

Jeśli używasz agenta kopii zapasowych, wykonaj część getCredential w wywołaniu zwrotnym onRestore. Dzięki temu dane logowania aplikacji zostaną przywrócone natychmiast po przywróceniu danych aplikacji.

Najczęstsze pytania

1. Czym się różni klucz przywracania od klucza dostępu?

Klucz przywracania działa podobnie jak klucz dostępu, ale jest przeznaczony specjalnie do przywracania konta na nowych urządzeniach. Gdy do uwierzytelniania używasz menedżera haseł, np. Menedżera haseł Google, wyświetlane są klucze dostępu i hasła, których możesz użyć, a klucz przywracania nie jest wyświetlany, ponieważ nie jest przeznaczony do regularnego logowania się.

Pyt. 2. Czy klucz przywracania jest jednorazowym poświadczeniem?

Nie, klucz przywracania nie jest jednorazowym poświadczeniem. Menedżer danych logowania nie przechowuje stanu i nie śledzi aktywności użytkownika, więc nie może automatycznie usuwać klucza po użyciu.

Klucze przywracania są usuwane tylko w tych sytuacjach:

  • Działania na poziomie systemu: użytkownicy odinstalowują aplikację lub czyszczą jej dane.
  • Wywołania na poziomie aplikacji: klucz możesz usunąć programowo, wywołując funkcję CredentialManager#clearCredentialState() podczas obsługi wylogowania użytkownika w kodzie aplikacji.

3. Czy funkcja przywracania danych logowania działa tylko na nowym urządzeniu?

Tak, ta funkcja jest przeznaczona do początkowej konfiguracji nowego urządzenia z Androidem, ponieważ jest bezpośrednio powiązana z funkcją tworzenia i przywracania kopii zapasowych systemu.

Pyt. 4. Czy mogę użyć funkcji przywracania danych logowania, aby automatycznie zalogować użytkownika na dowolnym urządzeniu, na którym jest zalogowany na to samo konto Google?

Nie, funkcja przywracania danych logowania nie jest przeznaczona do ogólnego logowania na różnych urządzeniach. Działa tylko w jednym konkretnym przypadku: gdy użytkownik konfiguruje nowe urządzenie, przywracając kopię zapasową ze starego urządzenia. Aby jednorazowe przywracanie się powiodło, oba urządzenia muszą być połączone z tym samym kontem Google.

5. Moja organizacja ma jedną aplikację główną i wiele aplikacji podrzędnych. Czy jeden klucz przywracania może działać w przypadku wszystkich tych aplikacji?

Nie. Klucz przywracania jest powiązany z niepowtarzalną nazwą pakietu aplikacji. Ponieważ aplikacja główna i każda subaplikacja mają różne nazwy pakietów, musisz utworzyć oddzielny klucz przywracania dla każdej z nich.

6. Czy do utworzenia klucza przywracania dla konta użytkownika wymagany jest klucz dostępu?

Nie, klucz dostępu nie jest wymagany. Możliwość utworzenia klucza przywracania jest niezależna od metody logowania użytkownika. Jego zadaniem jest zapisanie bieżącego stanu uwierzytelnienia użytkownika. Dopóki użytkownik jest aktywnie zalogowany w Twojej aplikacji, możesz wygenerować dla niego klucz przywracania.

7. Czy użytkownik może usunąć klucz przywracania?

Nie, użytkownik nie ma bezpośredniej kontroli nad kluczem przywracania. Za zarządzanie kluczami przywracania odpowiada logika aplikacji.

Ze względów bezpieczeństwa zalecamy, aby aplikacja automatycznie usuwała klucz za każdym razem, gdy użytkownik się wyloguje. Dzięki temu następnym razem, gdy użytkownik otworzy aplikację na tym samym urządzeniu, zostanie prawidłowo wylogowany i zobaczy prośbę o ponowne zalogowanie się.

8. Czy mogę używać funkcji przywracania danych logowania bez ustawiania wartości „true” w pliku manifestu?

Tak, funkcja przywracania danych logowania działa niezależnie od tego, czy wartość allowBackup jest ustawiona na true.

9. Jak działa przywracanie danych logowania w przypadku użytkowników, którzy mają w tej samej aplikacji kilka zalogowanych kont?

Funkcja przywracania danych logowania jest przeznaczona do obsługi tylko jednego konta naraz.