בקשה להרשאות נוספות

בעת בקשת הרשאת משתמש לגשת לנתוני משתמש או אפשר לבקש את כל היקפי ההרשאות מראש בבקשה הראשונית היקפים של בקשות רק לפי הצורך, באמצעות הרשאה מצטברת. באמצעות הרשאה מצטברת, האפליקציה מבקשת בהתחלה רק את היקפי ההרשאות שנדרשת להפעלת האפליקציה, ואז מבקשת היקפי הרשאות נוספים כהרשאות חדשות נדרשות, בהקשר שבו מצוין הסיבה לבקשה משתמש.

לדוגמה, נניח שהאפליקציה שלך מאפשרת למשתמשים לשמור פלייליסטים של מוזיקה ל-Google Drive. האפליקציה שלך יכולה לבקש פרטי משתמש בסיסיים בכניסה לחשבון, ובהמשך, כשהמשתמש יהיה מוכן לשמור את הפלייליסט הראשון שלו, לבקש הרשאות ב-Google Drive בלבד.

כדאי להשתמש בשיטה הזו אם לדעתכם משתמשים לא נכנסים לחשבון כי יותר מדי אנשים, או שהם מבולבלים לגבי הסיבה שבגללה מבקשים אותם להרשאות מסוימות. ההוראות הבאות מיועדות לאינטרנט, והן נגזרות הוראות להוספת לחצן כניסה בצד הלקוח: יצירת לחצן כניסה באמצעות Google 2.0. כדי לקבל מידע נוסף על הרשאה מצטברת לאינטרנט, אפשר לעבור מסמכי תיעוד של OAuth 2.0

שליחת בקשה להיקפים נוספים

בכניסה, האפליקציה מבקשת 'בסיס' היקפים, הכוללים את היקף הכניסה profile והיקפים ראשוניים אחרים שהאפליקציה מחייבת לצורך הפעלה. מאוחר יותר, כשהמשתמש ירצה לבצע פעולה שמחייבת פעולות נוספות היקפים, האפליקציה שלך מבקשת את ההיקפים הנוספים האלה והמשתמש מאשר רק את ההיקפים האלה את ההיקפים החדשים ממסך ההסכמה.

שלב 1: מבקשים היקפים בסיסיים

צריך לבקש את היקף הבסיס profile כשמפעילים את הכניסה באמצעות חשבון Google. הזה השלב הזה נכלל יצירת לחצן כניסה באמצעות 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}));
    });