Rozpoczynanie łączenia kont Google bezpośrednio ze swojej platformy.

Łą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 poprawia skuteczność łączenia kont dzięki angażowaniu użytkowników w kontekście Twojej aplikacji, a nie rozmowy z Asystentem. Można je integrować z wprowadzaniem użytkowników, ustawieniami i innymi platformami aplikacji, co stwarza możliwości odkrywania działań Asystenta Google i zwiększania ich zaangażowania. Na przykład po połączeniu możesz zaproponować przekierowanie użytkownika bezpośrednio do działania.

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

Łączenie z poziomu Platformy należy wykonać w następujących krokach:

  1. Użytkownik kliknie lub przełączy regułę łączenia w Twojej aplikacji mobilnej.
  2. Użytkownik wybiera konto Google, które ma zostać połączone.
    1. użytkownik wybiera do połączenia konto Google istniejące na urządzeniu lub loguje się na nowe konto;
  3. Użytkownik widzi ekrany z prośbą o zgodę na serwerze Google i musi wyrazić zgodę na kontynuowanie lub anulowanie procesu łączenia.
  4. Użytkownik zobaczy Twój ekran zgody i będzie musiał zgodzić się na kontynuowanie lub anulowanie procesu łączenia.
  5. Połączenie jest tworzone między kontem użytkownika, jego usługą i jego kontem Google.

Rysunek 1. Łączenie z poziomu platformy Flow

Wymagania

Aby zaimplementować link z Twojej platformy, potrzebujesz tych elementów:

  • Aplikacja na Androida.
  • Musisz mieć serwer OAuth 2.0, który obsługuje przepływ kodu autoryzacji OAuth 2.0, zarządzać nim i obsługiwać.

Konfiguracja

Przed wykonaniem poniższych kroków musisz przejść proces rejestracji dotyczący łączenia kont.

Konfigurowanie środowiska programistycznego

Pobierz najnowsze Usługi Google Play na hosta dewelopera:

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

  2. Jeśli pakiety mają stan inny niż Zainstalowane, wybierz je i kliknij Zainstaluj pakiety.

Konfiguracja aplikacji

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

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. Dodaj zależności interfejsu API „Link with Google” do pliku Gradle na poziomie modułu. Zwykle ma on postać app/build.gradle:

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

Połączenie z poziomu Platformy spowoduje zapisanie przez Google tokena dostępu udostępnionego przez usługę. Przed zwróceniem tokena użytkownikowi konieczne jest uzyskanie zgody.

Aby uzyskać zgodę użytkownika i zwrócić token kodu autoryzacji za pomocą pakietu SDK Usług Google Play, wykonaj podane niżej czynności.

  1. Utwórz intencję PendingIntent, która będzie mogła uruchomić aktywność związaną z uzyskiwaniem zgody – uzyskiwanie zgody jest uruchamiane przez interfejs Play Services API. Gdy interfejs API zostanie wywołany, musisz podać PendingIntent (dla jasności: 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 odpowiednie działanie w celu obsługi intencji związanych z prośbą o zgodę na wykorzystanie danych

    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, jeśli użytkownik odpowiednio zaakceptuje lub odrzuci lub anuluje Twoją zgodę.

  3. Utwórz żądanie zapisania tokena i między innymi parametrów konfiguracji, a następnie prześlij żądanie PendingIntent utworzone w kroku 1 powyżej.

    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 wyświetlają użytkownikowi prośbę o zgodę na wykorzystanie danych i zwraca kod autoryzacji do Google.

Sprawdzone metody

  • Aplikacja powinna wskazywać stan połączenia użytkownikowi za pomocą przycisku, przełącznika lub podobnego elementu wizualnego.

    Rysunek 1. Przykładowy obraz stanu linku

  • Należy powiadomić użytkownika po udanym linku, np. wyświetlić toast, wywołać zmianę stanu przełączania lub przekierować go na osobną stronę z linkiem.

  • Warto zachęcić użytkowników w aplikacji o połączenie kont, najlepiej w oparciu o silne sygnały, że takie połączenie przyniesie im korzyści.

  • Po połączeniu kont podaj użytkownikom przykład tego, co mogą zrobić z połączonym kontem. Jeśli na przykład dopiero co połączyłeś(-aś) usługę strumieniowania muzyki, poproś Asystenta Google o włączenie muzyki.

  • Zezwól użytkownikom na zarządzanie ich połączonymi kontami, w tym opcję ich rozłączania. Skieruj go na stronę zarządzania połączonymi kontami Google (https://myaccount.google.com/accountlinking).

Dokumentacja

Dokumentacja API do uwierzytelniania na Androidzie