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ń.