Saat meminta izin pengguna untuk mengakses data pengguna atau resource lainnya, Anda dapat meminta semua cakupan di awal dalam permintaan awal atau cakupan permintaan hanya sesuai kebutuhan, menggunakan otorisasi inkremental. Dengan menggunakan otorisasi inkremental, aplikasi Anda pada awalnya hanya meminta cakupan yang diperlukan untuk memulai aplikasi Anda, lalu meminta cakupan tambahan karena memerlukan izin baru, dalam konteks yang mengidentifikasi alasan permintaan tersebut kepada pengguna.
Misalnya, anggaplah aplikasi Anda memungkinkan pengguna menyimpan playlist musik ke Google Drive; aplikasi Anda dapat meminta informasi pengguna dasar saat login, dan setelahnya, saat pengguna siap menyimpan playlist pertama mereka, minta hanya izin Google Drive.
Gunakan teknik ini jika Anda mencurigai pengguna tidak login karena layar izin Anda membebani, atau bingung mengapa mereka diminta untuk memberikan izin tertentu. Petunjuk berikut ditujukan untuk web, dan berasal dari petunjuk untuk menambahkan tombol login sisi klien: Mem-build tombol Login dengan Google 2.0. Anda dapat membaca lebih lanjut otorisasi inkremental untuk web di dokumentasi OAuth 2.0.
Meminta cakupan tambahan
Saat login, aplikasi Anda meminta cakupan "dasar", yang terdiri dari cakupan login
profile
ditambah cakupan awal lainnya yang diperlukan aplikasi Anda untuk beroperasi.
Kemudian, saat pengguna ingin melakukan tindakan yang memerlukan cakupan tambahan, aplikasi Anda akan meminta cakupan tambahan tersebut dan pengguna hanya memberikan otorisasi untuk 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
Mem-build 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
Jika cakupan tambahan diperlukan, minta cakupan tersebut dengan membuat pembuat opsi dengan cakupan yang ingin Anda tambahkan, lalu memanggil user.grant({scope:
[OPTIONS BUILDER]}).then(successFunction, failFunction);
:
const options = new gapi.auth2.SigninOptionsBuilder();
options.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}));
});