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

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

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