Meminta izin tambahan

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 curiga pengguna tidak masuk karena layar persetujuan membingungkan, atau bingung mengapa mereka diminta untuk izin akses 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 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}));
    });