Untuk pengalaman pengguna terbaik, Anda harus meminta cakupan sesedikit mungkin saat
awalnya membuat pengguna login. Jika fungsi inti aplikasi Anda tidak terikat dengan
layanan Google, biasanya konfigurasi GoogleSignInOptions.DEFAULT_SIGN_IN
adalah
yang Anda perlukan saat login.
Jika aplikasi Anda memiliki fitur yang dapat menggunakan data Google API, tetapi tidak diperlukan sebagai bagian dari fungsi inti aplikasi, Anda harus mendesain aplikasi agar dapat menangani kasus dengan baik saat data API tidak dapat diakses. Misalnya, Anda dapat menyembunyikan daftar file yang baru saja disimpan saat pengguna belum memberikan akses Drive.
Anda sebaiknya meminta cakupan tambahan yang diperlukan untuk mengakses Google API hanya saat pengguna melakukan tindakan yang memerlukan akses ke API tertentu. Misalnya, Anda mungkin meminta izin untuk mengakses Drive pengguna hanya saat pengguna mengetuk tombol "Simpan ke Drive" untuk pertama kalinya.
Dengan menggunakan teknik ini, Anda dapat menghindari membebani pengguna baru atau membingungkan pengguna terkait alasan mereka dimintai 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, 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();
}
Dalam callback onActivityResult
aktivitas, Anda dapat memeriksa apakah izin
yang diperlukan berhasil diperoleh, dan jika demikian, 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 kumpulan izin dengan lebih
mudah.