Poproś o dodatkowe zakresy

Aby zapewnić użytkownikom jak największy komfort, podczas pierwszego logowania proś o jak najmniejszą liczbę zakresów. Jeśli kluczowe funkcje aplikacji nie są powiązane z usługą Google, podczas logowania często wystarczy konfiguracja GoogleSignInOptions.DEFAULT_SIGN_IN.

Jeśli Twoja aplikacja ma funkcje, które mogą korzystać z danych interfejsu API Google, ale nie są wymagane w ramach jej podstawowej funkcjonalności, zaprojektuj ją tak, aby mogła prawidłowo obsługiwać przypadki, w których 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.

Dodatkowe zakresy potrzebne do uzyskania dostępu do interfejsów API Google należy żądać tylko wtedy, gdy użytkownik wykona działanie wymagające 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 temu unikniesz przytłoczenia nowych użytkowników lub wprowadzenia ich w zakłopotanie pytaniami o określone uprawnienia.

Prośba o uprawnienia wymagane przez działania użytkownika

Za każdym razem, gdy użytkownik wykona działanie wymagające zakresu, o który nie poproszono podczas logowania, wywołaj funkcję GoogleSignIn.hasPermissions, aby sprawdzić, czy użytkownik przyznał już wymagane uprawnienia. Jeśli nie, wywołaj funkcję GoogleSignIn.requestPermissions, aby uruchomić aktywność, która poprosi użytkownika o dodatkowe wymagane zakresy.

Jeśli na przykład użytkownik wykona działanie, które wymaga dostępu do pamięci aplikacji na 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();
}

onActivityResultwywołaniu zwrotnym aktywności możesz sprawdzić, czy wymagane uprawnienia zostały uzyskane, a jeśli tak, wykonać 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 hasPermissionsrequestPermissions, aby wygodniej sprawdzić i uzyskać zestaw uprawnień.