Per un'esperienza utente ottimale, ti consigliamo di richiedere il minor numero possibile di ambiti quando inizialmente accedono gli utenti. Se la funzionalità di base dell'app non è collegata a un servizio Google, spesso la configurazione di 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 sia in grado di gestire agevolmente i casi in cui i dati delle API non sono accessibili. Ad esempio, potresti nascondere un elenco dei 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 una determinata API. Ad esempio, puoi richiedere l'autorizzazione ad accedere a Drive dell'utente solo quando l'utente tocca il pulsante "Salva in Drive" per la prima volta.
Utilizzando questa tecnica, puoi evitare di sovraccaricare i nuovi utenti o di confonderli 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 richieda all'utente gli ambiti aggiuntivi richiesti.
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 verificare 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 un insieme di autorizzazioni in modo più pratico.