Meminta Cakupan Tambahan

Untuk pengalaman pengguna terbaik, Anda harus meminta sesedikit mungkin cakupan saat pertama kali membuat pengguna login. Jika fungsi inti aplikasi Anda tidak terikat dengan oleh layanan Google, konfigurasi GoogleSignInOptions.DEFAULT_SIGN_IN sering kali 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 tersebut dapat menangani kasus dengan lancar ketika data API tidak dapat diakses. Misalnya, Anda mungkin menyembunyikan daftar file yang baru-baru ini disimpan saat pengguna belum memberikan Drive akses.

Anda harus meminta cakupan tambahan yang hanya diperlukan untuk mengakses Google API saat pengguna melakukan tindakan yang memerlukan akses ke API tertentu. Sebagai Misalnya, Anda dapat meminta izin untuk mengakses Drive pengguna hanya ketika pengguna mengetuk “Simpan ke Drive” untuk pertama kalinya.

Dengan menggunakan teknik ini, Anda dapat menghindari kebingungan pengguna baru, atau membingungkan pengguna tentang mengapa mereka dimintai izin tertentu.

Meminta izin yang diperlukan oleh tindakan pengguna

Setiap kali pengguna melakukan tindakan yang memerlukan cakupan yang tidak diminta login, panggil GoogleSignIn.hasPermissions untuk memeriksa apakah pengguna sudah telah diberi izin yang diperlukan. Jika tidak, panggil GoogleSignIn.requestPermissions untuk meluncurkan aktivitas yang meminta cakupan tambahan yang diperlukan dari .

Misalnya, jika pengguna melakukan tindakan yang memerlukan akses ke Drive miliknya penyimpanan aplikasi, lakukan tindakan 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 metode yang diperlukan izin akses 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 serangkaian izin dengan mudah.