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.