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