Saat meminta izin kepada pengguna untuk mengakses data pengguna atau tambahan, Anda dapat meminta semua cakupan di awal dalam permintaan awal atau meminta cakupan hanya sesuai kebutuhan, menggunakan otorisasi inkremental. Dengan menggunakan otorisasi tambahan, aplikasi Anda pada awalnya hanya meminta cakupan tersebut yang diperlukan untuk memulai aplikasi Anda, lalu meminta cakupan tambahan sebagai izin baru diperlukan, dalam konteks yang mengidentifikasi alasan permintaan kepada .
Misalnya, aplikasi Anda memungkinkan pengguna menyimpan playlist musik ke Google Drive; aplikasi Anda dapat meminta informasi dasar pengguna saat {i>login<i}, dan setelahnya, ketika pengguna siap untuk menyimpan {i>playlist<i} pertama mereka, hanya meminta 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: Membuat 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 akan meminta "base" cakupan, yang terdiri dari cakupan login
profile
ditambah cakupan awal lainnya yang diperlukan aplikasi Anda untuk beroperasi.
Kemudian, ketika pengguna ingin melakukan
tindakan yang memerlukan tambahan
cakupan tambahan, aplikasi Anda 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. Ini
langkah ini termasuk 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
Jika cakupan tambahan diperlukan, mintalah cakupan tersebut dengan membuat opsi
builder 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}));
});