Zainicjuj połączenie z kontem Google bezpośrednio na swojej platformie.

Łączenie kont możesz zrealizować bezpośrednio w aplikacji mobilnej, dzięki czemu użytkownicy będą mogli połączyć swoje konta w Twojej usłudze z kontami Google. Utworzony link zapewnia Google dostęp do danych, które użytkownik zgodzi na udostępnianie.

Takie podejście zwiększa skuteczność łączenia kont, ponieważ angażuje użytkowników w znanym im kontekście aplikacji, a nie w rozmowie z Asystentem. Można ją zintegrować z procesem wprowadzania użytkowników, ustawieniami i innymi elementami aplikacji, co stwarza możliwości odkrywania i angażowania użytkowników w działanie Asystenta Google. Po połączeniu kont możesz na przykład zaproponować użytkownikowi bezpośrednie przejście do Twojej usługi.

Korzyści dla użytkowników to:

  • Użytkownicy mogą rozpocząć proces łączenia kont w aplikacji, który już znają.
  • Użytkownicy nie wymagają danych logowania, ponieważ zostały już uwierzytelnieni na urządzeniu i w Twojej aplikacji mobilnej.

Zalety dla deweloperów:

  • Określ, gdzie chcesz promować i rozpoczynać łączenie kont w aplikacji mobilnej, na przykład w ustawieniach użytkownika, w reklamach pełnoekranowych lub po zalogowaniu się użytkownika w aplikacji mobilnej. Dodanie wielu punktów wejścia w celu połączenia kont ułatwia odnalezienie konta. , co przekłada się na większe zaangażowanie i liczbę powiązanych kont.
  • Wzrost współczynnika konwersji, ponieważ użytkownicy mogą ukończyć proces łączenia, wykonując mniej kroków niż standardowy przepływ OAuth w internecie.
  • Zaimplementowanie linku z platformy (Androida) wymaga tylko niewielkiego nakładu pracy, ponieważ proces ten korzysta z dotychczasowej implementacji OAuth2.0. Zakładamy, że masz już taką implementację.
  • Niższy współczynnik porzuceń, ponieważ użytkownicy nie muszą ponownie wpisywać swoich danych logowania i mogą ukończyć ten proces w mniejszej liczbie kroków. Współczynnik porzuceń może wynosić nawet 80% w przepływach, w których użytkownicy są zobowiązani do wycofania i podania danych logowania.

Jak to działa

Połączenie z Twoją platformą jest realizowane w tych krokach:

  1. Użytkownik klika lub przełącza wyzwalacz połączenia w Twojej aplikacji mobilnej.
  2. Użytkownik wybiera konto Google, które chce połączyć.
    1. Użytkownik wybiera istniejące konto Google na urządzeniu, które chce połączyć, lub loguje się na nowe konto.
  3. Użytkownik widzi ekrany zgody hostowane przez Google i musi wyrazić zgodę, aby kontynuować, lub anulować, aby zatrzymać proces łączenia.
  4. Użytkownik widzi ekran zgody i musi wyrazić zgodę, aby kontynuować, lub anulować, aby zatrzymać proces łączenia.
  5. Połączenie jest nawiązywane między kontem użytkownika w Twojej usłudze a jego kontem Google.

Rysunek 1. Proces łączenia z Twoją platformą

Wymagania

Aby zaimplementować połączenie z Twoją platformą, potrzebujesz:

  • aplikacji na Androida;
  • serwera OAuth 2.0, który obsługuje przepływ kodu autoryzacji OAuth 2.0 authorization code flow, oraz możliwości zarządzania nim i utrzymywania go.

Konfiguracja

Zanim wykonasz opisane poniżej czynności, musisz przejść proces rejestracji połączenia kont registration process.

Konfigurowanie środowiska programistycznego

Pobierz najnowsze Usługi Google Play na hosta programistycznego:

  1. Otwórz Menedżera SDK na Androida.
  1. W sekcji Narzędzia SDK znajdź Usługi Google Play.

  2. Jeśli stan tych pakietów nie jest ustawiony na Zainstalowano, zaznacz oba i kliknij Zainstaluj pakiety.

Konfiguracja aplikacji

  1. W pliku build.gradle na poziomie projektu dodaj repozytorium Google Maven do sekcji buildscript i allprojects.

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. Dodaj zależności dla interfejsu API „Połącz z Google” do pliku Gradle na poziomie aplikacji modułu, który zwykle jest plikiem app/build.gradle:

    dependencies {
      implementation 'com.google.android.gms:play-services-auth:21.5.1'
    }
    

W wyniku procesu połączenia z Twoją platformą token dostępu udostępniony przez Twoją usługę zostanie zapisany przez Google. Zanim zwrócisz token użytkownikowi, musisz uzyskać jego zgodę.

Aby uzyskać zgodę użytkownika i zwrócić token kodu autoryzacji za pomocą pakietu SDK Usług Google Play:

  1. Utwórz PendingIntent, który może uruchomić aktywność związaną ze zgodą – zgoda jest uruchamiana przez interfejs API Usług Google Play. Gdy wywołasz interfejs API, musisz podać PendingIntent (w celu uniknięcia wątpliwości będziemy go nazywać consentPendingIntent).

    Kotlin

    // Build a PendingIntent that can launch the consent activity
    val consentPendingIntent = buildConsentPendingIntent()
    

    Java

    // Build a PendingIntent that can launch your consent activity
    PendingIntent consentPendingIntent =
              buildConsentPendingIntent();
    
  2. Utwórz odpowiednią aktywność, która będzie obsługiwać intencję zgody.

    Kotlin

      class ConsentActivity : AppCompatActivity
    
      private fun onConsentAccepted() {
          // Obtain a token (for simplicity, we’ll ignore the async nature
          // of the following call)
          val token = getToken()
          val intent = Intent()
                      .putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN,
                                token)
          setResult(Activity.RESULT_OK, intent)
          finish()
      }
    
      private fun onConsentRejectedOrCanceled() {
          setResult(Activity.RESULT_CANCELED)
          finish()
      }
    

    Java

      public class ConsentActivity extends AppCompatActivity {
        ...
        private void onConsentAccepted() {
          // Obtain a token (for simplicity, we’ll ignore the async nature of
          // the following call
          String token = getToken();
          Intent intent = new Intent();
          intent.putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token);
          setResult(Activity.RESULT_OK, intent);
          finish();
        }
    
        private void onConsentRejectedOrCanceled() {
          setResult(Activity.RESULT_CANCELED, null);
          finish();
        }
     }
    
    

    Zakładamy, że metody onConsentAccpeted() i onConsentRejectedOrCanceled() są wywoływane odpowiednio, gdy użytkownik zaakceptuje lub odrzuci/anuluje Twoją zgodę.

  3. Utwórz prośbę o zapisanie tokena i oprócz innych parametrów konfiguracji przekaż PendingIntent utworzony w kroku 1.

    Kotlin

      // Create an ActivityResultLauncher which registers a callback for the
      // Activity result contract
      val activityResultLauncher = registerForActivityResult(
        ActivityResultContracts.StartIntentSenderForResult())
        { result ->
          if (result.resultCode == RESULT_OK) {
            // Successfully finished the flow and saved the token
          } else {
            // Flow failed, for example the user may have canceled the flow
          }
        }
    
      // Build token save request
      val request = SaveAccountLinkingTokenRequest.builder()
        .setTokenType(SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE)
        .setConsentPendingIntent(consentPendingIntent)
        .setServiceId("service-id-of-and-defined-by-developer")
        //Set the scopes that the token is valid for on your platform
        .setScopes(scopes)
        .build()
    
       // Launch consent activity and retrieve token
       Identity.getCredentialSavingClient(this)
         .saveAccountLinkingToken(request)
         .addOnSuccessListener( saveAccountLinkingTokenResult -> {
            if (saveAccountLinkingTokenResult.hasResolution()) {
              val pendingIntent = saveAccountLinkingTokenResult
                                  .getPendingIntent()
              val intentSenderRequest = IntentSenderRequest
                                        .Builder(pendingIntent).build()
              activityResultLauncher.launch(intentSenderRequest)
            } else {
               // This should not happen, let’s log this
               Log.e(TAG, "Failed to save token");
            }
          })
          .addOnFailureListener(e -> Log.e(TAG, Failed to save token, e))
    

    Java

      // Create an ActivityResultLauncher which registers a callback for the
      // Activity result contract
      ActivityResultLauncher<IntentSenderRequest>
          activityResultLauncher =
          registerForActivityResult(new ActivityResultContracts
                                        .StartIntentSenderForResult(),
                                    result -> {
          if (result.getResultCode() == RESULT_OK) {
              // Successfully finished the flow and saved the token
          } else {
              // Flow failed, for example the user may have canceled the flow
          }
      });
    
     // Build token save request
     SaveAccountLinkingTokenRequest request =
        SaveAccountLinkingTokenRequest.builder()
            .setTokenType(
                SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE)
            .setConsentPendingIntent(consentPendingIntent)
            .setServiceId("service-id-of-and-defined-by-developer")
            //Set the scopes that the token is valid for on your platform
            .setScopes(scopes)
            .build();
    
      // Launch consent activity and retrieve token
      Identity.getCredentialSavingClient(this)
          .saveAccountLinkingToken(request)
          .addOnSuccessListener(
              saveAccountLinkingTokenResult -> {
                if (saveAccountLinkingTokenResult.hasResolution()) {
                  // Launch the resolution intent
                  PendingIntent pendingIntent =
                      saveAccountLinkingTokenResult.getPendingIntent();
                  IntentSenderRequest intentSenderRequest =
                      new IntentSenderRequest.Builder(pendingIntent).build();
                  activityResultLauncher.launch(intentSenderRequest);
                } else {
                  // This should not happen, let’s log this
                  Log.e(TAG, "Failed to save token");
                }
              })
          .addOnFailureListener(e -> Log.e(TAG, "Failed to save token", e));
      ```
    

Powyższe kroki powodują wyświetlenie prośby o zgodę i zwrócenie kodu autoryzacji do Google.

Sprawdzone metody

  • Twoja aplikacja powinna informować użytkownika o stanie połączenia za pomocą przycisku, przełącznika lub podobnego elementu wizualnego.

    Rysunek 1. Przykładowy obraz stanu połączenia

  • Po pomyślnym połączeniu konta powiadom użytkownika, np. wyświetlając komunikat, zmieniając stan przełącznika lub przekierowując użytkownika na osobną stronę z informacją o pomyślnym połączeniu.

  • Rozważ wyświetlanie użytkownikom aplikacji prośby o połączenie kont, najlepiej na podstawie wyraźnych sygnałów, że połączenie przyniesie im korzyści.

  • Po pomyślnym połączeniu konta podaj użytkownikom przykład, co mogą zrobić z połączonym kontem. Jeśli na przykład połączysz usługę strumieniowania muzyki, poproś Asystenta Google o odtworzenie muzyki.

  • Umożliw użytkownikom zarządzanie połączonymi kontami, w tym ich rozłączanie. Przekieruj ich na stronę zarządzania połączonymi kontami Google, czyli https://myaccount.google.com/accountlinking.

Dokumentacja

Dokumentacja interfejsu API uwierzytelniania Androida