Saat meminta izin pengguna untuk mengakses data pengguna atau resource lainnya, Anda dapat meminta semua cakupan di awal dalam permintaan awal atau meminta cakupan hanya sesuai kebutuhan, menggunakan otorisasi inkremental. Dengan menggunakan otorisasi inkremental, aplikasi Anda awalnya hanya meminta cakupan yang diperlukan untuk memulai aplikasi Anda, lalu meminta cakupan tambahan saat izin baru diperlukan, dalam konteks yang mengidentifikasi alasan permintaan kepada pengguna.
Misalnya, anggaplah aplikasi Anda memungkinkan pengguna menyimpan playlist musik ke Google Drive; aplikasi tersebut dapat meminta informasi pengguna dasar saat login, dan nantinya, ketika pengguna siap menyimpan playlist pertamanya, hanya minta izin dari Google Drive.
Gunakan teknik ini jika Anda mencurigai pengguna tidak login karena layar izin Anda berlebihan, atau bingung mengapa mereka dimintai izin tertentu. Petunjuk berikut ditujukan untuk web, dan berasal dari petunjuk untuk menambahkan tombol login sisi klien: Membuat tombol Login dengan Google 2.0. Anda dapat membaca selengkapnya tentang otorisasi inkremental untuk web di dokumentasi OAuth 2.0.
Meminta cakupan tambahan
Saat login, aplikasi Anda akan meminta cakupan "dasar", yang terdiri dari cakupan login
profile
serta cakupan awal lainnya yang diperlukan aplikasi Anda untuk operasi.
Kemudian, saat pengguna ingin melakukan tindakan yang memerlukan cakupan
tambahan, aplikasi Anda akan meminta cakupan tambahan tersebut dan pengguna hanya mengizinkan
cakupan baru dari layar izin.
Langkah 1: Minta cakupan dasar
Minta cakupan dasar profile
saat Anda melakukan inisialisasi Login dengan Google. Langkah ini disertakan dalam Membuat tombol Login dengan Google 2.0.
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' }); /** Base scope **/
Langkah 2: Minta cakupan tambahan
Di mana pun cakupan tambahan diperlukan, mintalah dengan membuat builder opsi dengan cakupan yang ingin Anda tambahkan, lalu memanggil user.grant({scope:
[OPTIONS BUILDER]}).then(successFunction, failFunction);
:
const option = new gapi.auth2.SigninOptionsBuilder();
option.setScope('email https://www.googleapis.com/auth/drive');
googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
function(success){
console.log(JSON.stringify({message: "success", value: success}));
},
function(fail){
alert(JSON.stringify({message: "fail", value: fail}));
});