Per garantire un'esperienza ottimale, devi richiedere il minor numero possibile di ambiti all'accesso iniziale. Se la funzionalità di base dell'app non è collegata a un servizio Google, la configurazione di GoogleSignInOptions.DEFAULT_SIGN_IN
è spesso sufficiente per accedere.
Se la tua app ha funzionalità che possono utilizzare i dati dell'API di Google, ma non sono necessari come parte della funzionalità di base dell'app, devi progettarla in modo che sia in grado di gestire agevolmente i casi in cui i dati dell'API non sono accessibili. Ad esempio, puoi nascondere un elenco dei file salvati di recente quando 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 una determinata API. Ad esempio, potresti richiedere l'autorizzazione per accedere al Drive dell'utente solo quando l'utente tocca un pulsante "Salva in Drive" per la prima volta.
Utilizzando questa tecnica, puoi evitare di sovraccaricare i nuovi utenti o confondere gli utenti in merito al motivo per cui viene richiesta loro determinate autorizzazioni.
Richiesta delle autorizzazioni richieste dalle azioni dell'utente
Ogni volta che un utente esegue un'azione che richiede un ambito non richiesto all'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
delle tue attività, puoi controllare se le autorizzazioni richieste sono state acquisite correttamente e, in tal caso, eseguire l'azione 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 una serie di autorizzazioni in modo più pratico.