Prośba o dodatkowe zakresy

Ze względu na wygodę użytkowników podczas początkowego logowania się do użytkowników należy prosić o jak najmniejszą liczbę zakresów. Jeśli główna funkcjonalność aplikacji nie jest powiązana z usługą Google, często do logowania wystarczy konfiguracja GoogleSignInOptions.DEFAULT_SIGN_IN.

Jeśli aplikacja ma funkcje, które mogą korzystać z danych interfejsu API Google, ale nie są wymagane w ramach jej głównej funkcji, zaprojektuj ją tak, aby płynnie obsługiwała przypadki, gdy dane interfejsu API są niedostępne. Możesz na przykład ukryć listę ostatnio zapisanych plików, jeśli użytkownik nie przyznał dostępu do Dysku.

Prośby o dodatkowe zakresy, które są potrzebne do uzyskania dostępu do interfejsów API Google, należy wysyłać tylko wtedy, gdy użytkownik wykona działanie, które wymaga dostępu do konkretnego interfejsu API. Możesz na przykład poprosić o dostęp do Dysku użytkownika tylko wtedy, gdy po raz pierwszy kliknie on przycisk „Zapisz na Dysku”.

Dzięki tej metodzie unikniesz przytłoczenia nowych użytkowników i dezorientowania użytkowników, którzy nie będą wiedzieć, dlaczego są proszeni o określone uprawnienia.

Wysyłanie prośby o uprawnienia wymagane przez działania użytkownika

Za każdym razem, gdy użytkownik wykonuje działanie wymagające zakresu, które nie jest żądane podczas logowania, wywołaj GoogleSignIn.hasPermissions, aby sprawdzić, czy użytkownik nie przyznał już wymaganych uprawnień. Jeśli nie, wywołaj GoogleSignIn.requestPermissions, aby uruchomić działanie, które zażąda od użytkownika dodatkowych wymaganych zakresów.

Jeśli na przykład użytkownik wykona działanie, które wymaga dostępu do miejsca w aplikacji Dysk, wykonaj te czynności:

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();
}

W wywołaniu zwrotnym onActivityResult aktywności możesz sprawdzić, czy wymagane uprawnienia zostały przyznane, a jeśli tak, wykonaj to działanie użytkownika.

@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();
        }
    }
}

Możesz też przekazać GoogleSignInOptionsExtension do hasPermissions i requestPermissions, aby ułatwić sobie sprawdzenie i uzyskanie zestawu uprawnień.