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

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

    // 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), צריך להגדיר handlers של הצלחה וכישלון, כמו בדוגמה הבאה:

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