هنگام درخواست مجوز کاربر برای دسترسی به دادههای کاربر یا منابع دیگر، میتوانید همه دامنهها را از قبل در درخواست اولیه درخواست کنید یا دامنههای درخواست را فقط در صورت نیاز با استفاده از مجوز افزایشی درخواست کنید. با استفاده از مجوز افزایشی، برنامه شما در ابتدا فقط محدوده های مورد نیاز برای راه اندازی برنامه شما را درخواست می کند، سپس دامنه های اضافی را درخواست می کند زیرا مجوزهای جدید مورد نیاز است، در زمینه ای که دلیل درخواست را برای کاربر مشخص می کند.
به عنوان مثال، فرض کنید برنامه شما به کاربران اجازه می دهد لیست های پخش موسیقی را در Google Drive ذخیره کنند. برنامه شما میتواند اطلاعات اولیه کاربر را هنگام ورود به سیستم درخواست کند، و بعداً، وقتی کاربر آماده ذخیره اولین لیست پخش خود شد، فقط مجوزهای Google Drive را درخواست کند.
اگر مشکوک هستید که کاربران به دلیل زیاد بودن صفحه رضایت شما وارد سیستم نمیشوند یا در مورد اینکه چرا از آنها مجوزهای خاص خواسته شده است، از این روش استفاده کنید. دستورالعملهای زیر برای وب هستند و از دستورالعملهای اضافه کردن دکمه ورود به سیستم در سمت سرویس گیرنده مشتق شدهاند: ساخت دکمه ورود به سیستم Google 2.0 . میتوانید درباره مجوز افزایشی برای وب در اسناد OAuth 2.0 اطلاعات بیشتری کسب کنید.
درخواست دامنه های اضافی
در هنگام ورود به سیستم، برنامه شما دامنههای «پایه» را درخواست میکند که شامل نمایه profile
ورود به سیستم بهعلاوه هر حوزه اولیه دیگری است که برنامه شما برای عملکرد نیاز دارد. بعداً، وقتی کاربر میخواهد عملی را انجام دهد که به محدودههای اضافی نیاز دارد، برنامه شما آن محدودههای اضافی را درخواست میکند و کاربر فقط دامنههای جدید را از صفحه رضایت مجاز میکند.
مرحله 1: دامنه های پایه را درخواست کنید
هنگامی که Google Sign-In را راه اندازی می کنید، profile
دامنه پایه را درخواست کنید. این مرحله در ساخت دکمه ورود به سیستم Google 2.0 گنجانده شده است.
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' }); /** Base scope **/
مرحله 2: دامنه های اضافی را درخواست کنید
هر جا که به دامنههای اضافی نیاز است، با ساختن یک گزینهساز با محدودههایی که میخواهید اضافه کنید و سپس با فراخوانی 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}));
});