النقل من تسجيل الدخول باستخدام +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 إلى مَعلمة النطاق.