النقل من تسجيل الدخول باستخدام +Google

خطوات للحدّ من تأثير تغييرات النطاق على المستخدمين

  1. إذا كان تطبيقك يتطلب عنوان بريد إلكتروني لمستخدم تمت مصادقته، وكنت قد استخدمت profile.emails.read لهذا الغرض في السابق، يمكنك استخدام email بدلاً من ذلك.
  2. الحصول على الموافقة على profile.emails.read من خلال طلب إثبات هوية تمت الموافقة عليه يُرجى الرجوع إلى المقالة كيف يمكنني إرسال طلب لإثبات الملكية؟
  3. أبطِل الرمز المميّز للمستخدم السابق للنطاق الذي ستتم إزالته، أو أزِل إمكانية الوصول إلى التطبيق بالكامل. على سبيل المثال، يجب إبطال رمز مميّز يمكنه الوصول إلى profile.emails.read. ننصحك بتطبيق إبطال العملية أثناء وجود المستخدمين في طلبك حتى تتمكّن من الحصول على موافقة المستخدم على الفور.
  4. اطلب من المستخدمين إعادة الموافقة على النطاق الجديد، مثل email، بدون profile.emails.read.
  5. يُرجى إزالة النطاق الذي سيتم إيقافه تدريجيًا من إعدادات شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth في Google APIs.

تعتمد التغييرات التي يجب إجراؤها لنقل موقعك الإلكتروني من "تسجيل الدخول باستخدام Google+ " إلى "تسجيل الدخول باستخدام Google" على مسار تسجيل الدخول باستخدام Google+ الذي تستخدمه. بشكل عام، تتطلب عملية نقل البيانات تعديل زر تسجيل الدخول والنطاقات المطلوبة والتعليمات حول كيفية استرداد معلومات الملف الشخصي من Google.

عند تحديث زر تسجيل الدخول، يجب عدم الإشارة إلى G+ أو استخدام اللون الأحمر. اتّبِع إرشادات بناء هوية العلامة التجارية المعدّلة.

طلبت معظم تطبيقات "تسجيل الدخول باستخدام Google+ " مجموعة من النطاقات: plus.login وplus.me وplus.profile.emails.read. تحتاج إلى إعادة تعيين نطاقاتك على النحو التالي:

النطاق القديم نطاق جديد
plus.login profile
plus.me openid
plus.profile.emails.read email

ولقد استخدم العديد من منفّذي ميزة "تسجيل الدخول باستخدام +Google" مسار الرمز. ويعني هذا أنّ تطبيقات Android أو iOS أو JavaScript تحصل على رمز OAuth من Google، وسيُرسِل العميل هذا الرمز إلى الخادم مرة أخرى، مع الحماية من تزوير الطلبات من مواقع إلكترونية متعددة. بعد ذلك، يتحقّق الخادم من صحة الرمز ويحصل على رموز إعادة التحميل والوصول لسحب معلومات الملف الشخصي للمستخدم من واجهة برمجة تطبيقات people.get.

تنصحك Google الآن بطلب رمز مميز للمعرّف وإرسال هذا الرمز المميز من العميل إلى خادمك. تحتوي رموز التعريف المميّزة على وسائل حماية للتزوير على مواقع إلكترونية مختلفة، ويمكن التحقّق منها بشكل ثابت على خادمك، ما يتجنّب طلب بيانات إضافية من واجهة برمجة التطبيقات للحصول على معلومات الملف الشخصي للمستخدم من خوادم Google. اتّبِع التعليمات للتحقّق من صحة الرموز المميّزة لرقم التعريف على خادمك.

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

نقل زر تسجيل دخول بتنسيق HTML

إذا ضمَّنت زر "تسجيل الدخول باستخدام Google+ " في صفحتك من خلال تعيين الصف g-signin إلى أحد العناصر، عليك إجراء التغييرات التالية:

  • عند تحديد معرِّف العميل، سواء في علامة <meta> أو سمة data- أو كائن معلَمات، يمكنك تغيير السلسلة clientid إلى client_id، كما في المثال التالي:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • يجب تعيين الصف g-signin2 لعنصر زر تسجيل الدخول بدلاً من g-signin. أيضًا، حدد استدعاءات منفصلة للنجاح والفشل بدلاً من معاودة اتصال واحدة، كما في المثال التالي:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • بدلاً من استخدام معالج واحد لمعاودة الاتصال، حدد معالِجات النجاح والفشل، كما في المثال التالي:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • تؤدّي هذه التغييرات إلى تعديل النطاقات التلقائية إلى profile email openid. يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم، مثل الاسم وعنوان البريد الإلكتروني وعنوان URL لصورة الصورة، كما يلي:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

نقل بيانات زر تسجيل دخول معروضًا ديناميكيًا

إذا ضمّنت زر تسجيل الدخول باستخدام Google+ في صفحتك من خلال الاتصال بـ gapi.signin.render()، عليك إجراء التغييرات التالية:

  • عند تحديد معرِّف العميل، سواء في علامة <meta> أو سمة data- أو كائن معلَمات، يمكنك تغيير السلسلة clientid إلى client_id، كما في المثال التالي:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • اعرض زر تسجيل الدخول مع gapi.signin2.render() بدلاً من gapi.signin.render()، كما في المثال التالي:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • بدلاً من استخدام معالج واحد لمعاودة الاتصال، حدد معالِجات النجاح والفشل، كما في المثال التالي:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

تؤدّي هذه التغييرات إلى تعديل النطاقات التلقائية إلى profile email openid. يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من خلال طريقة getBasicProfile().

نقل عملية تسجيل الدخول باستخدام JavaScript

إذا بدأت عملية تسجيل الدخول من خلال مكالمة إلى gapi.auth.signIn() عندما ينقر المستخدمون على زر تسجيل الدخول، عليك إجراء التغييرات التالية:

  • عند تحديد معرِّف العميل، سواء في علامة <meta> أو سمة data- أو كائن معلَمات، يمكنك تغيير السلسلة clientid إلى client_id، كما في المثال التالي:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • استخدِم gapi.auth2.attachClickHandler() لبدء عملية تسجيل الدخول عند الضغط على زرّ، كما في المثال التالي:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • بدلاً من استخدام معالج واحد لمعاودة الاتصال، حدد معالِجات النجاح والفشل، كما في المثال التالي:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

تؤدّي هذه التغييرات إلى تعديل النطاقات التلقائية إلى profile email openid. يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من خلال استدعاء الإجراء getBasicProfile().

نقل تدفق مختلط من جهة الخادم

إذا استخدمت واجهة برمجة تطبيقات JavaScript للحصول على رمز تفويض يُستخدم لمرة واحدة لتمريره إلى خادمك، عليك إجراء التغييرات التالية:

  • تغيير النطاق من https://www.googleapis.com/auth/plus.login إلى profile.

  • استخدِم طريقة gapi.auth2.grantOfflineAccess() مع دالة معاودة الاتصال الحالية، كما في المثال التالي:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

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