העברה מכניסה ל-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, והלקוח שולח את הקוד חזרה לשרת, יחד עם הגנה מפני זיוף בקשות בין אתרים. לאחר מכן השרת מאמת את הקוד ומקבל אסימוני רענון וגישה כדי לשלוף את פרטי פרופיל המשתמש מה-API people.get.

Google ממליצה עכשיו לבקש אסימון מזהה ולשלוח אותו מהלקוח לשרת שלכם. לאסימונים מזהים יש הגנה מובנית מפני זיוף אתרים, וניתן גם לאמת אותם באופן סטטי בשרת כדי למנוע קריאה נוספת ל-API על מנת לקבל מידע על פרופיל המשתמש מהשרתים של Google. מבצעים את ההוראות לאימות אסימונים מזהים בשרת.

אם אתם עדיין מעדיפים להשתמש בתהליך הקוד כדי לקבל את פרטי הפרופיל, תוכלו לעשות זאת. אחרי שלשרת שלכם יהיה אסימון גישה, תצטרכו לקבל את פרטי הפרופיל מנקודות הקצה של userinfo שצוינו במסמך הגילוי הנאות לכניסה. הפורמט של תגובת ה-API שונה מהפורמט של התגובה בפרופיל 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. כמו כן, יש לציין קריאות חוזרות (callback) נפרדות להצלחה ולכשל במקום קריאה חוזרת אחת, כמו בדוגמה הבאה:

    <!-- 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>
    
  • במקום להשתמש ב-handler אחד של קריאה חוזרת (callback), הגדירו את הגורמים המטפלים בהצלחה ובכשלים, כמו בדוגמה הבאה:

    // 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);
    
  • במקום להשתמש ב-handler אחד של קריאה חוזרת (callback), הגדירו את הגורמים המטפלים בהצלחה ובכשלים, כמו בדוגמה הבאה:

    // 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);
    
  • במקום להשתמש ב-handler אחד של קריאה חוזרת (callback), הגדירו את הגורמים המטפלים בהצלחה ובכשלים, כמו בדוגמה הבאה:

    // 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. אפשר לקבל את פרטי הפרופיל הבסיסיים של המשתמש על ידי קריאה ל-method 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 לפרמטר של ההיקף.