النقل من تسجيل الدخول باستخدام +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 أو تستخدم اللون الأحمر. الالتزام بإرشادات العلامة التجارية المعدّلة

تطلب معظم تطبيقات تسجيل الدخول باستخدام G+ مزيجًا من النطاقات: 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 API للحصول على رمز تفويض لمرة واحدة لتمريره إلى خادمك، عليك إجراء التغييرات التالية:

  • تغيير النطاق من 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 إلى مَعلمة النطاق.