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 della tua app non è legata a un servizio Google, spesso la configurazione GoogleSignInOptions.DEFAULT_SIGN_IN
è tutto ciò di cui hai bisogno al momento dell'accesso.
Se la tua app include funzionalità che possono utilizzare i dati dell'API Google, ma non sono obbligatorie come parte della funzionalità di base dell'app, devi progettarla in modo che possa gestire in modo corretto 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.
Con questa tecnica, puoi evitare di sopraffare i nuovi utenti o di confonderli sul motivo per cui gli 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.