Prośba o dodatkowe zakresy

Aby zapewnić użytkownikom najlepsze wrażenia, podczas początkowego logowania użytkowników wysyłaj żądanie jak najmniejszej liczby 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 przyznał 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 wymagające 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 tej metodzie możesz uniknąć przytłoczenia nowych użytkowników i dezorientowania użytkowników, dlaczego są proszeni o przyznanie określonych uprawnień.

Prośba 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ń. 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 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 hasPermissions i requestPermissions, aby wygodniej sprawdzić i uzyskać zestaw uprawnień.