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

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

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

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

    // 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. אפשר לקבל את פרטי הפרופיל הבסיסיים של המשתמש באמצעות קריאה ל-method‏ getBasicProfile().

העברת תהליך היברידי בצד השרת

אם השתמשתם ב-JavaScript API כדי לקבל קוד הרשאה חד-פעמי שתוכלו להעביר לשרת, עליכם לבצע את השינויים הבאים:

  • משנים את ההיקף מ-https://www.googleapis.com/auth/plus.login ל-profile.

  • משתמשים בשיטה gapi.auth2.grantOfflineAccess() עם פונקציית ה-callback הקיימת, כמו בדוגמה הבאה:

    <!-- 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 לפרמטר ההיקף.