Łą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
Aby utworzyć połączenie na platformie, wykonaj te czynności:
- Użytkownik klika lub przełącza aktywator połączenia w Twojej aplikacji mobilnej.
- Użytkownik wybiera konto Google, które chce połączyć.
- Użytkownik wybiera istniejące konto Google na urządzeniu, aby je połączyć, lub loguje się na nowe konto.
- Użytkownikowi wyświetla się ekran zgody hostowany przez Google i musi on wyrazić zgodę, aby kontynuować, lub anulować, aby zatrzymać proces łączenia.
- Użytkownik zobaczy ekran zgody i musi wyrazić zgodę, aby kontynuować, lub anulować, aby zatrzymać proces łączenia.
- Połączenie jest ustanawiane między kontem użytkownika w Twojej usłudze a jego kontem Google.
Rysunek 1. Połączenie z przepływu na platformie
Wymagania
Aby wdrożyć Link na swojej platformie, potrzebujesz:
- Aplikacja na Androida.
- Posiadać serwer OAuth 2.0, który obsługuje przepływ kodu autoryzacji OAuth 2.0, oraz nim zarządzać i go utrzymywać.
Konfiguracja
Zanim wykonasz opisane poniżej czynności, musisz przejść proces rejestracji łączenia kont.
Konfigurowanie środowiska programistycznego
Pobierz najnowsze Usługi Google Play na hosta programistycznego:
- Otwórz Menedżera pakietu Android SDK.
W sekcji SDK Tools znajdź Usługi Google Play.
Jeśli stan tych pakietów nie jest określony jako Zainstalowany, wybierz oba i kliknij Install Packages (Zainstaluj pakiety).
Konfiguracja aplikacji
W sekcjach
buildscriptiallprojectsplikubuild.gradlena poziomie projektu dodaj repozytorium Maven Google.buildscript { repositories { google() } } allprojects { repositories { google() } }Dodaj zależności interfejsu API „Połącz z Google” do pliku gradle na poziomie aplikacji modułu, który zwykle ma nazwę
app/build.gradle:dependencies { implementation 'com.google.android.gms:play-services-auth:22.0.0' }
Dodawanie obsługi linków z platformy
Proces połączenia z Twojej platformy spowoduje, że Google zapisze token dostępu dostarczony przez Twoją usługę. Zanim zwrócisz token użytkownika, musisz uzyskać zgodę.
Wykonaj te czynności, aby uzyskać zgodę użytkownika i zwrócić token kodu autoryzacji za pomocą pakietu SDK Usług Google Play.
Utwórz obiekt PendingIntent, który może uruchomić aktywność związaną ze zgodą. Zgoda jest uruchamiana przez interfejs Usług Google Play API. Podczas wywoływania interfejsu API musisz podać
PendingIntent(który w celu uniknięcia wątpliwości będzie nazywanyconsentPendingIntent).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();Utwórz odpowiednią aktywność, aby obsłużyć 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()ionConsentRejectedOrCanceled()są wywoływane, gdy użytkownik zaakceptuje lub odrzuci/anuluje zgodę.Utwórz żądanie zapisania tokena i przekaż m.in. parametr konfiguracji
PendingIntentutworzony 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)); ```
Wykonanie powyższych czynności spowoduje wyświetlenie użytkownikowi prośby o zgodę i zwrócenie kodu autoryzacji do Google.
Sprawdzone metody
Aplikacja powinna wskazywać użytkownikowi stan połączenia za pomocą przycisku, przełącznika lub podobnego elementu wizualnego.
Rysunek 1. Przykładowy obraz stanu połączenia
Po pomyślnym połączeniu należy powiadomić użytkownika, np. wyświetlić wyskakujące powiadomienie, zmienić stan przełącznika lub przekierować użytkownika na osobną stronę z informacją o pomyślnym połączeniu.
Warto rozważyć 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, np. jeśli właśnie połączyli usługę strumieniowania muzyki, poproś Asystenta Google o włączenie muzyki.
Umożliwiać użytkownikom zarządzanie połączonymi kontami, w tym odłączanie ich. Skieruj użytkownika na stronę zarządzania połączonymi kontami Google, czyli https://myaccount.google.com/accountlinking.