Prośba o dodatkowe zakresy

Aby zapewnić użytkownikom jak najwyższy komfort, podczas początkowej rejestracji użytkowników poproś o jak najmniej zakresów. Jeśli główna funkcjonalność aplikacji nie jest powiązana z usługą Google, podczas logowania się często wystarczy konfiguracja GoogleSignInOptions.DEFAULT_SIGN_IN.

Jeśli Twoja aplikacja zawiera funkcje, które mogą korzystać z danych interfejsu Google API, ale nie są wymagane do jej podstawowej funkcjonalności, powinna być zaprojektowana tak, aby sprawnie radzić sobie z przypadkami, gdy dane interfejsu API są niedostępne. Możesz na przykład ukryć listę ostatnio zapisanych plików, jeśli użytkownik nie ma dostępu do Dysku.

Dodatkowe zakresy dostępu, których potrzebujesz do korzystania z interfejsów API Google, żądaj tylko wtedy, gdy użytkownik wykona działanie, które wymaga dostępu do konkretnego interfejsu API. Na przykład możesz poprosić o dostęp do Dysku użytkownika tylko wtedy, gdy użytkownik po raz pierwszy kliknie przycisk „Zapisz na Dysku”.

Dzięki temu możesz uniknąć przytłoczenia nowych użytkowników lub wprowadzenia ich w błąd co do tego, dlaczego proszą o określone uprawnienia.

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

Gdy użytkownik wykonuje działanie, które wymaga zakresu, o który nie został poproszony podczas logowania, wywołaj funkcję GoogleSignIn.hasPermissions, aby sprawdzić, czy użytkownik udzielił już wymaganych uprawnień. W przeciwnym razie wywołaj funkcję GoogleSignIn.requestPermissions, aby uruchomić aktywność, która poprosi użytkownika o dodatkowe wymagane uprawnienia.

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

W zgłoszeniu onActivityResult możesz sprawdzić, czy udało się uzyskać wymagane uprawnienia, 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 sprawdzać i uzyskiwać zestaw uprawnień.