طلب أذونات إضافية

عند طلب إذن المستخدم للوصول إلى بيانات المستخدم أو الموارد الأخرى، يمكنك طلب جميع النطاقات مقدمًا في الطلب الأولي أو طلب النطاقات فقط حسب الحاجة، باستخدام تفويض متزايد. باستخدام التفويض التزايدي، يطلب تطبيقك في البداية النطاقات المطلوبة فقط لبدء تشغيل تطبيقك، ثم يطلب نطاقات إضافية عند الحاجة إلى أذونات جديدة، في سياق يحدّد سبب إرسال الطلب إلى المستخدم.

على سبيل المثال، لنفترض أن تطبيقك يتيح للمستخدمين حفظ قوائم تشغيل الموسيقى في Google Drive، ويمكن لتطبيقك طلب الحصول على معلومات المستخدم الأساسية عند تسجيل الدخول، وفي وقت لاحق، عندما يكون المستخدم مستعدًا لحفظ أول قائمة تشغيل، يطلب منك فقط الحصول على أذونات Google Drive.

استخدِم هذا الأسلوب إذا كنت تشك في أنّ المستخدمين لا يسجّلون الدخول لأنّ شاشة الموافقة مربكة أو مرتبكة بشأن سبب طلب أذونات معيّنة منهم. التعليمات التالية مخصَّصة للويب وهي مستمَدة من تعليمات إضافة زر تسجيل الدخول من جهة العميل: إنشاء زر لتسجيل الدخول في الإصدار 2.0 من Google. يمكنك الاطّلاع على مزيد من المعلومات عن التفويض التزايدي للويب في مستندات 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}));
    });