Per una migliore esperienza utente, ti consigliamo di richiedere il minor numero possibile di ambiti quando
che eseguono l'accesso iniziale agli utenti. Se la funzionalità di base dell'app non è legata a una
servizio Google, la configurazione GoogleSignInOptions.DEFAULT_SIGN_IN
è spesso
tutto ciò che serve al momento dell'accesso.
Se la tua app include funzionalità che possono usare i dati delle API di Google, ma non come parte della funzionalità di base dell'app, dovresti progettarla per 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 l'accesso.
Devi richiedere gli ambiti aggiuntivi di cui hai bisogno solo per accedere alle API di Google Quando l'utente esegue un'azione che richiede l'accesso a una determinata API. Per Ad esempio, puoi richiedere l'autorizzazione ad accedere al Drive dell'utente solo quando l'utente tocca "Salva in Drive" per la prima volta.
Utilizzando questa tecnica, puoi evitare di sovraccaricare i nuovi utenti o creare confusione agli utenti il motivo per cui vengono loro richieste determinate autorizzazioni.
Richiesta delle autorizzazioni richieste dalle azioni dell'utente
Ogni volta che un utente esegue un'azione che richiede un ambito non richiesto in
accedi, chiama GoogleSignIn.hasPermissions
per verificare se l'utente ha già
a cui sono state concesse le autorizzazioni richieste. In caso contrario, chiama GoogleSignIn.requestPermissions
per avviare un'attività che richiede gli ambiti aggiuntivi richiesti
utente.
Ad esempio, se un utente esegue un'azione che richiede l'accesso al proprio Drive spazio di archiviazione per le app, 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
relativo alle tue attività, puoi controllare se le 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 controllare e acquisire un insieme di autorizzazioni maggiormente
in modo pratico.