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

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

على سبيل المثال، لنفترض أنّ تطبيقك يتيح للمستخدمين حفظ قوائم تشغيل الموسيقى. إلى 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}));
    });