Richiesta di ambiti aggiuntivi

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

Se la tua app dispone di funzionalità che possono utilizzare i dati delle API di Google ma non sono necessarie come parte della funzionalità di base dell'app, dovresti progettare l'app in modo da poter 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 gli ambiti aggiuntivi di cui hai bisogno per accedere alle API di Google solo quando l'utente esegue un'azione che richiede l'accesso a una determinata API. Ad esempio, potresti richiedere l'autorizzazione per accedere a Drive dell'utente solo quando l'utente tocca un pulsante "Salva su Drive" per la prima volta.

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

Richiesta delle autorizzazioni richieste dalle azioni 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 all'utente gli ambiti aggiuntivi necessari.

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

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 verificare se le autorizzazioni richieste sono state acquisite correttamente e, in caso affermativo, 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 un GoogleSignInOptionsExtension a hasPermissions e requestPermissions per verificare e acquisire un insieme di autorizzazioni più comodamente.