הצגת הלחצן 'כניסה באמצעות חשבון Google'

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

לחצן כניסה מותאם אישית.

אחרי שהמשתמש בוחר חשבון Google ומספק את הסכמתו, Google משתפת את פרופיל המשתמש באמצעות אסימון אינטרנט מסוג JSON ‏(JWT). לסקירה כללית של השלבים שמעורבים במהלך הכניסה לחשבון וחוויית המשתמש, קראו את המאמר איך זה עובד. הסבר על הלחצן 'בהתאמה אישית' בוחן את התנאים השונים מצבים שמשפיעים על האופן שבו הלחצן מוצג למשתמשים.

דרישות מוקדמות

מבצעים את הפעולות הבאות לפני שמוסיפים את הלחצן לדף ההתחברות:

רינדור הלחצן

כדי להציג את הלחצן 'כניסה באמצעות חשבון Google', אפשר לבחור באפשרות HTML או JavaScript כדי לעבד את הלחצן בדף ההתחברות:

HTML

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

<html>
  <body>
    <script src="https://accounts.google.com/gsi/client" async></script>
    <div id="g_id_onload"
        data-client_id="YOUR_GOOGLE_CLIENT_ID"
        data-login_uri="https://your.domain/your_login_endpoint"
        data-auto_prompt="false">
    </div>
    <div class="g_id_signin"
        data-type="standard"
        data-size="large"
        data-theme="outline"
        data-text="sign_in_with"
        data-shape="rectangular"
        data-logo_alignment="left">
    </div>
  <body>
</html>

רכיב עם מחלקה של g_id_signin מעובד כלחצן 'כניסה באמצעות חשבון Google'. הלחצן מותאם אישית לפי הפרמטרים שצוינו במאפייני הנתונים.

כדי להציג לחצן לכניסה באמצעות חשבון Google וגם בהקשה על Google One באותו דף, הסרה של data-auto_prompt="false". מומלץ לעשות זאת כדי להפחית את החיכוך ולשפר את שיעורי הכניסה.

הרשימה המלאה של מאפייני הנתונים מופיעה בדף חומר העזר בנושא g_id_signin.

JavaScript

עיבוד הלחצן 'כניסה' באמצעות JavaScript, והחזרת ה-JWT לטיפול בקריאה החוזרת (callback) של JavaScript בדפדפן.

<html>
  <body>
    <script src="https://accounts.google.com/gsi/client" async></script>
    <script>
      function handleCredentialResponse(response) {
        console.log("Encoded JWT ID token: " + response.credential);
      }
      window.onload = function () {
        google.accounts.id.initialize({
          client_id: "YOUR_GOOGLE_CLIENT_ID"
          callback: handleCredentialResponse
        });
        google.accounts.id.renderButton(
          document.getElementById("buttonDiv"),
          { theme: "outline", size: "large" }  // customization attributes
        );
        google.accounts.id.prompt(); // also display the One Tap dialog
      }
    </script>
    <div id="buttonDiv"></div>
  </body>
</html>

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

כדי למזער את חיכוך המשתמש, google.accounts.id.prompt() מופעל להצגה הקשה אחת כחלופה לשימוש בלחצן להרשמה או לכניסה.

ספריית ה-GIS מנתחת את מסמך ה-HTML לאלמנטים עם מאפיין מזהה שמוגדר כ-g_id_onload, או למאפייני סיווג שמכילים את הערך g_id_signin. אם שיעור ההתאמה נמצא, הלחצן מעובד באמצעות HTML, ללא קשר עיבוד הלחצן גם ב-JavaScript. כדי למנוע הצגה של הלחצן פעמיים, אולי עם פרמטרים מתנגשים, אל תכללו בדפי ה-HTML רכיבי HTML שתואמים לשמות האלה.

שפת הלחצן

שפת הלחצן נקבעת באופן אוטומטי לפי ברירת המחדל של הדפדפן או להעדפת המשתמש עבור הפעילות ב-Google. אפשר גם לבחור שפה באופן ידני על ידי הוספת הפרמטר hl וקוד השפה בזמן טעינת הספרייה ועל ידי הוספת מקום הנתונים האופציונלי או פרמטר הלוקאל data-locale ב-HTML או בלוקאל ב-JavaScript.

HTML

קטע הקוד הבא מראה איך להציג את שפת הלחצן בצרפתית על ידי הוספת הפרמטר hl לכתובת ה-URL של ספריית הלקוח ועל ידי הגדרת המאפיין data-locale לצרפתית:

<script src="https://accounts.google.com/gsi/client?hl=fr" async></script>
<div class="g_id_signin" data-locale="fr">
</div>

JavaScript

קטע הקוד הבא מראה איך להציג את שפת הלחצן בצרפתית על ידי הוספת הפרמטר hl לכתובת ה-URL של ספריית הלקוח וקריאה שיטה google.accounts.id.renderButton עם הפרמטר locale מוגדר לערך צרפתית:

<script src="https://accounts.google.com/gsi/client?hl=fr" async></script>
<script>
  google.accounts.id.renderButton(
    document.getElementById("buttonDiv"),
    { locale: "fr" }
  );
</script>

טיפול בפרטי כניסה

אחרי שהמשתמש נותן הסכמה, Google מחזירה פרטי כניסה מסוג אסימון רשת מבוסס JSON‏ (JWT) שנקרא אסימון מזהה, לדפדפן של המשתמש או ישירות לנקודת קצה להתחברות שמתארחת בפלטפורמה שלכם.

המיקום שבו בוחרים לקבל את ה-JWT תלוי בכך אם מעבדים את הלחצן באמצעות HTML או JavaScript, ואם נעשה שימוש במצב UX של חלון קופץ או של הפניה אוטומטית.

כשמשתמשים במצב חוויית המשתמש popup, תהליך חוויית המשתמש של הכניסה מתבצע בחלון קופץ. בדרך כלל, זוהי חוויה פחות פולשנית למשתמשים, והיא מצב ברירת המחדל של חוויית המשתמש.

כשמריצים את הלחצן באמצעות:

HTML

אפשר להגדיר אחת מהאפשרויות הבאות:

  • data-callback כדי להחזיר את ה-JWT ל-handler של הקריאה החוזרת, או
  • data-login_uri כדי ש-Google תשלח את ה-JWT ישירות להתחברות נקודת קצה באמצעות בקשת POST.

אם שני הערכים מוגדרים, הערך של data-callback מקבל קדימות על פני הערך של data-login_uri. הגדרה של שני הערכים יכולה לעזור כשמשתמשים בקריאה חוזרת (callback) לניפוי באגים.

JavaScript

צריך לציין callback, מצב חלון קופץ לא תומך בהפניות אוטומטיות כשמפעילים את הלחצן ב-JavaScript. אם הערך מוגדר, המערכת מתעלמת מ-login_uri.

למידע נוסף על פענוח הקוד, ראו טיפול בתגובה של פרטי הכניסה שהוחזרו JWT בתוך ה-handler של הקריאה החוזרת ל-JS.

מצב הפניה לכתובת URL אחרת

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

כשמריצים את הלחצן באמצעות:

  • HTML: אפשר להגדיר את data-login_uri כ-URI של נקודת הקצה להתחברות.
  • JavaScript מגדיר את login_uri כ-URI של נקודת הקצה להתחברות (אופציונלי).

אם לא תספקו ערך, Google תחזיר את ה-JWT למזהה ה-URI של הדף הנוכחי.

מזהה ה-URI של נקודת הקצה להתחברות

צריך להשתמש ב-HTTPS וב-URI מוחלט כשמגדירים data-login_uri או login_uri. לדוגמה, https://example.com/path.

מותר להשתמש ב-HTTP רק כשמשתמשים ב-localhost במהלך פיתוח: http://localhost/path

שימוש במקורות JavaScript מאובטחים וב-URI להפניה אוטומטית – תיאור מלא של הדרישות וכללי האימות של Google.