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