Il collegamento dell'account può essere completato direttamente nell'app per dispositivi mobili, consentendo agli utenti di collegare il proprio account sul tuo servizio al proprio Account Google. Il link stabilito concede a Google l'accesso ai dati che l'utente acconsente alla condivisione.
Questo approccio migliora il rendimento del collegamento dell'account coinvolgendo gli utenti nel contesto familiare dell'app anziché in una conversazione con l'assistente. Può essere integrato nelle operazioni preliminari degli utenti, nelle impostazioni e in altre piattaforme per le app, creando opportunità per la scoperta e il coinvolgimento della tua azione dell'Assistente Google. Ad esempio, dopo il collegamento, potresti offrirgli di indirizzare l'utente direttamente alla tua azione.
Ecco alcuni vantaggi per gli utenti:
- Gli utenti possono avviare e completare la procedura di collegamento dell'account nella tua app, un ambiente che già conoscono.
- Gli utenti non richiedono credenziali di accesso perché sono già state autenticate sul dispositivo e nella tua app per dispositivi mobili.
I vantaggi per gli sviluppatori sono:
- Stabilisci dove promuovere e avviare il collegamento dell'account nella tua app per dispositivi mobili, ad esempio nelle impostazioni utente, negli interstitial o dopo che un utente accede alla tua app per dispositivi mobili. L'aggiunta di più punti di accesso per avviare il collegamento dell'account consente di rendere più visibile il collegamento dell'account , con conseguente aumento del coinvolgimento e del numero di account collegati.
- Aumento del tasso di conversione poiché gli utenti possono completare il processo di collegamento in meno passaggi rispetto al flusso OAuth basato sul Web standard.
- Bassa richiesta di assistenza tecnica per implementare Link dalla tua piattaforma (Android), in quanto questa procedura sfrutta l'implementazione OAuth2.0 esistente, presupponendo che tu ne abbia già una implementata.
- Riduzione dei tassi di abbandono perché gli utenti non devono reinserire le credenziali di accesso e sono in grado di completare la procedura in meno passaggi. I tassi di abbandono possono raggiungere l'80% nei flussi in cui gli utenti devono richiamare e inserire le proprie credenziali di accesso.
Come funziona
Il collegamento dalla Piattaforma viene completato nei seguenti passaggi:
- L'utente farà clic o attiverà un attivatore di collegamento nella tua app mobile.
- L'utente seleziona l'Account Google da collegare.
- L'utente seleziona sul dispositivo un Account Google esistente da collegare oppure accede con un nuovo account.
- All'utente vengono mostrate schermate per il consenso ospitate da Google e deve accettare di continuare o annullare l'operazione per interrompere la procedura di collegamento.
- L'utente visualizza la tua schermata per il consenso e deve accettare per continuare o annullare la procedura di collegamento.
- Il collegamento viene stabilito tra l'account dell'utente, sul tuo servizio e il suo Account Google.
Figura 1. Eseguire il collegamento dal flusso della piattaforma
Requisiti
Per implementare il collegamento dalla tua piattaforma, è necessario quanto segue:
- Un'app per Android.
- Possedere, gestire e gestire un server OAuth 2.0 che supporta il flusso del codice di autorizzazione OAuth 2.0.
Configurazione
Prima di procedere con i passaggi riportati di seguito, devi aver completato la procedura di registrazione relativa al collegamento dell'account.
Configura l'ambiente di sviluppo
Scarica la versione più recente di Google Play Services sul tuo host di sviluppo:
- Apri Android SDK Manager.
In Strumenti SDK, individua Google Play Services.
Se lo stato di questi pacchetti non è Installato, selezionali entrambi e fai clic su Installa pacchetti.
Configura la tua app
Nel file
build.gradle
a livello di progetto, includi il Repository Maven di Google in entrambe le sezionibuildscript
eallprojects
.buildscript { repositories { google() } } allprojects { repositories { google() } }
Aggiungi le dipendenze per l'API "Link with Google" al file gradle a livello di app del tuo modulo, che in genere è
app/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-auth:21.0.0' }
Aggiungi il supporto per il collegamento dalla tua piattaforma
Il collegamento dal flusso della piattaforma comporterà il salvataggio di un token di accesso, fornito dal tuo servizio, da parte di Google. Il consenso deve essere ricevuto prima di restituire il token per l'utente.
Segui questi passaggi per ottenere il consenso dell'utente e restituire un token del codice di autorizzazione tramite l'SDK Google Play Services.
Creare un PendingIntent che possa avviare la tua attività di consenso. Il consenso viene lanciato dall'API Play Services. Dovrai fornire un
PendingIntent
(che verrà denominatoconsentPendingIntent
per chiarezza) quando l'API verrà chiamataKotlin
// 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();
Crea l'attività corrispondente per gestire l'intento di consenso
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(); } }
Presumiamo che i metodi
onConsentAccpeted()
eonConsentRejectedOrCanceled()
vengano richiamati se l'utente accetta o rifiuta/annulla il tuo consenso rispettivamente.Crea una richiesta per salvare il token e, tra gli altri parametri di configurazione, passa il
PendingIntent
creato nel passaggio 1 qui sopra.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)); ```
I passaggi precedenti richiedono a un utente il consenso e restituisce un codice di autorizzazione a Google.
Best practice
L'app dovrebbe indicare all'utente lo stato del link tramite un pulsante, un pulsante di attivazione/disattivazione o un elemento visivo simile.
Figura 1. Immagine di stato del link di esempio
Dovresti informare l'utente dopo che un collegamento è riuscito, ad esempio mostrare un avviso popup, attivare una modifica dello stato di attivazione/disattivazione o reindirizzare l'utente a una pagina separata con collegamento riuscito.
Ti consigliamo di chiedere agli utenti in-app di collegare gli account, idealmente in base a forti indicatori che il collegamento potrebbe essere utile a questi utenti.
Dopo il collegamento, dovresti fornire agli utenti un esempio di cosa fare con l'account collegato. Ad esempio, se hai appena collegato un servizio di streaming musicale, chiedi all'Assistente Google di farti ascoltare un po' di musica.
Consentire agli utenti di gestire gli account collegati, inclusa la possibilità di scollegarli. Indirizzare l'utente alla pagina di gestione degli Account Google collegati, ovvero https://myaccount.google.com/accountlinking.
Riferimento
Documentazione di riferimento per le API di autenticazione Android