Richiesta di ambiti aggiuntivi

Per un'esperienza utente ottimale, devi richiedere il minor numero di ambiti possibile quando accedi inizialmente agli utenti. Se la funzionalità di base dell'app non è collegata a un servizio Google, spesso la configurazione GoogleSignInOptions.DEFAULT_SIGN_IN è sufficiente al momento dell'accesso.

Se la tua app ha funzionalità che possono utilizzare i dati delle API di Google, ma non sono necessarie nella funzionalità di base dell'app, devi progettare l'app in modo che possa gestire agevolmente i casi in cui i dati dell'API non sono accessibili. Ad esempio, potresti nascondere un elenco di file salvati di recente se l'utente non ha concesso l'accesso a Drive.

Devi richiedere ambiti aggiuntivi di cui hai bisogno per accedere alle API di Google solo quando l'utente esegue un'azione che richiede l'accesso a un'API specifica. Ad esempio, puoi richiedere l'autorizzazione ad accedere al Drive dell'utente solo quando l'utente tocca per la prima volta un pulsante "Salva in Drive".

Utilizzando questa tecnica, puoi evitare di sovraccaricare i nuovi utenti o di confondere gli utenti sul motivo per cui vengono richieste determinate autorizzazioni.

Richiesta di autorizzazioni richieste dalle azioni dell'utente

Ogni volta che un utente esegue un'azione che richiede un ambito non richiesto al momento dell'accesso, chiama GoogleSignIn.hasPermissions per verificare se l'utente ha già concesso le autorizzazioni richieste. In caso contrario, chiama GoogleSignIn.requestPermissions per avviare un'attività che richiede gli ambiti aggiuntivi richiesti all'utente.

Ad esempio, se un utente esegue un'azione che richiede l'accesso allo spazio di archiviazione dell'app Drive:

if (!GoogleSignIn.hasPermissions(
        GoogleSignIn.getLastSignedInAccount(getActivity()),
        Drive.SCOPE_APPFOLDER)) {
    GoogleSignIn.requestPermissions(
            MyExampleActivity.this,
            RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION,
            GoogleSignIn.getLastSignedInAccount(getActivity()),
            Drive.SCOPE_APPFOLDER);
} else {
    saveToDriveAppFolder();
}

Nel callback onActivityResult dell'attività, puoi controllare se le autorizzazioni richieste sono state acquisite correttamente e, in questo caso, eseguire l'azione dell'utente.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION == requestCode) {
            saveToDriveAppFolder();
        }
    }
}

Puoi anche passare GoogleSignInOptionsExtension a hasPermissions e requestPermissions per verificare e acquisire più comodamente un insieme di autorizzazioni.