Łą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.
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 połączyć konto z platformy, wykonaj te czynności:
- Użytkownik klika lub przełącza wyzwalacz łączenia w 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żytkownik widzi ekrany zgody hostowane przez Google i musi wyrazić zgodę, aby kontynuować, lub anulować proces łączenia.
- Użytkownik widzi ekran zgody i musi wyrazić zgodę na kontynuowanie lub anulować proces łączenia.
- Połączenie jest tworzone między kontem użytkownika w Twojej usłudze a jego kontem Google.

Rysunek 1. Łączenie z procesem na platformie
Wymagania
Aby zaimplementować funkcję Link na swojej platformie, musisz mieć:
- Aplikacja na Androida.
- Posiadać serwer OAuth 2.0, nim zarządzać i go utrzymywać. Serwer musi obsługiwać przepływ kodu autoryzacji OAuth 2.0.
Konfiguracja
Zanim przejdziesz do poniższych czynności, musisz ukończyć proces rejestracji.
Konfigurowanie środowiska programistycznego
Pobierz najnowsze Usługi Google Play na hoście deweloperskim:
- Otwórz Menedżera pakietu Android SDK.
W sekcji Narzędzia SDK znajdź Usługi Google Play.
Jeśli stan tych pakietów nie jest Ustawiony, zaznacz oba i kliknij Zainstaluj pakiety.
Konfiguracja aplikacji
W pliku
build.gradle
na poziomie projektu dodaj repozytorium Maven firmy Google w sekcjachbuildscript
iallprojects
.buildscript { repositories { google() } } allprojects { repositories { google() } }
Dodaj zależności interfejsu API „Połącz z Google” do pliku gradle na poziomie aplikacji modułu. Jest to zwykle
app/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-auth:21.3.0' }
Dodawanie obsługi funkcji Link na platformie
Połączenie z Twojej platformy spowoduje, że token dostępu dostarczony przez Twoją usługę zostanie zapisany przez Google. Przed zwróceniem tokena użytkownikowi należy uzyskać jego zgodę.
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.
Utwórz PendingIntent, który może wywołać działanie związane z wyrażeniem zgody. Wyrażenie zgody jest wywoływane przez interfejs Play Services API. Podczas wywołania interfejsu API musisz podać
PendingIntent
(dla ułatwienia 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();
Utwórz odpowiednią aktywność do obsługi intencji 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 odpowiednio, gdy użytkownik akceptuje lub odrzuca/odwołuje zgodę.Utwórz żądanie zapisania tokena i podaj w nim, między innymi parametr konfiguracji
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)); ```
Po wykonaniu tych czynności użytkownik zostanie poproszony o wyrażenie zgody i otrzyma kod autoryzacyjny, który należy przesłać do Google.
Sprawdzone metody
Aplikacja powinna wskazywać użytkownikowi stan linku za pomocą przycisku, przełącznika lub podobnego elementu wizualnego.
Rysunek 1. Przykładowy obraz stanu połączenia
Po utworzeniu linku należy powiadomić użytkownika, np. wyświetlić komunikat, wywołać zmianę stanu przełącznika lub przekierować użytkownika na osobną stronę z potwierdzeniem.
Zastanów się, czy nie warto poprosić użytkowników aplikacji o połączenie kont, najlepiej na podstawie wyraźnych sygnałów, że takie połączenie przyniesie im korzyści.
Po połączeniu konta podaj użytkownikom przykład tego, co można zrobić z połączonym kontem. Jeśli na przykład połączysz konto z usługą strumieniowego odtwarzania muzyki, poproś Asystenta Google o włączenie muzyki.
Umożliw użytkownikom zarządzanie połączonymi kontami, w tym rozłączanie tych kont. Przekaż użytkownikowi link do strony zarządzania połączonymi kontami Google: https://myaccount.google.com/accountlinking.
Dokumentacja
Dokumentacja na temat interfejsu API autoryzacji na Androida