Prośba o dodatkowe zakresy

Aby zadbać o komfort 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 funkcja aplikacji nie jest powiązana z usługą Google, często przy logowaniu wystarczy konfiguracja GoogleSignInOptions.DEFAULT_SIGN_IN.

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

Poproś o dodatkowe zakresy potrzebne do uzyskania dostępu do interfejsów API Google tylko wtedy, gdy użytkownik wykona działanie wymagające dostępu do określonego interfejsu API. Możesz na przykład poprosić o dostęp do Dysku użytkownika tylko wtedy, gdy po raz pierwszy kliknie przycisk „Zapisz na Dysku”.

Stosując tę metodę, możesz uniknąć przytłoczenia nowych użytkowników i dezorientowania użytkowników, co do powodów, dla których 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 żą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 Dysku, 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 w aktywności możesz sprawdzić, czy uzyskano wymagane uprawnienia, a jeśli tak, wykonaj 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ń.