Untuk pengalaman pengguna terbaik, Anda harus meminta sesedikit mungkin cakupan saat
pertama kali pengguna login. Jika fungsi inti aplikasi Anda tidak terkait dengan layanan Google, konfigurasi GoogleSignInOptions.DEFAULT_SIGN_IN sering kali merupakan semua yang Anda butuhkan saat login.
Jika aplikasi Anda memiliki fitur yang dapat menggunakan data Google API, tetapi tidak diperlukan sebagai bagian dari fungsi inti aplikasi Anda, Anda harus mendesain aplikasi Anda agar dapat menangani kasus dengan baik saat data API tidak dapat diakses. Misalnya, Anda dapat menyembunyikan daftar file yang baru saja disimpan jika pengguna belum memberikan akses Drive.
Anda hanya boleh meminta cakupan tambahan yang diperlukan untuk mengakses Google API saat pengguna melakukan tindakan yang memerlukan akses ke API tertentu. Misalnya, Anda dapat meminta izin untuk mengakses Drive pengguna hanya saat pengguna mengetuk tombol "Simpan ke Drive" untuk pertama kalinya.
Dengan menggunakan teknik ini, Anda dapat menghindari membuat pengguna baru kewalahan, atau membuat pengguna bingung tentang alasan mereka diminta izin tertentu.
Meminta izin yang diperlukan oleh tindakan pengguna
Setiap kali pengguna melakukan tindakan yang memerlukan cakupan yang tidak diminta saat login, panggil GoogleSignIn.hasPermissions untuk memeriksa apakah pengguna telah memberikan izin yang diperlukan. Jika tidak, panggil GoogleSignIn.requestPermissions
untuk meluncurkan aktivitas yang meminta cakupan tambahan yang diperlukan dari
pengguna.
Misalnya, jika pengguna melakukan tindakan yang memerlukan akses ke penyimpanan aplikasi Drive-nya, lakukan hal berikut:
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();
}
Di callback onActivityResult aktivitas, Anda dapat memeriksa apakah izin yang diperlukan berhasil diperoleh, dan jika ya, lakukan tindakan pengguna.
@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();
}
}
}
Anda juga dapat meneruskan GoogleSignInOptionsExtension ke hasPermissions dan
requestPermissions untuk memeriksa dan mendapatkan sekumpulan izin dengan lebih
nyaman.