גוגל מחויבת לקידום הון גזעי לקהילות שחורות. תראה איך.

כניסה של Google לטלוויזיות והתקנים

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

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

כדי להשתמש בזרימת כניסה זו, על האפליקציה לפעול במכשיר העומד בקריטריונים הבאים:

  • על המכשיר להיות מסוגל להציג כתובת אתר בת 40 תווים וקוד משתמש בן 15 תווים, יחד עם הוראות למשתמש.
  • על המכשיר להיות מחובר לאינטרנט.

קבל תעודת לקוח וסוד לקוח

האפליקציה שלך זקוקה למזהה לקוח OAuth 2.0 וסוד לקוח כדי להגיש בקשות לנקודות הקצה של כניסה של גוגל.

כדי למצוא את זיהוי הלקוח ואת סוד הלקוח של הפרויקט שלך, בצע את הפעולות הבאות:

  1. בחר אישורי OAuth 2.0 קיימים או פתח את דף האישורים .
  2. אם עדיין לא עשית זאת, צור את אישורי ה- OAuth 2.0 של הפרויקט שלך על ידי לחיצה על צור אישורים> מזהה לקוח של OAuth וספק את המידע הדרוש ליצירת האישורים.
  3. חפש את מזהה הלקוח בקטע מזהי לקוח של OAuth 2.0 . לפרטים, לחץ על מזהה הלקוח.

אם אתה יוצר מזהה לקוח חדש, בחר בסוג היישום טלוויזיות והתקני קלט מוגבלים .

השג קוד משתמש וכתובת אתר לאימות

ברגע שמשתמש מבקש להיכנס באמצעות חשבון Google, אתה מקבל קוד משתמש וכתובת אתר לאימות על ידי שליחת בקשת HTTP POST לנקודת הקצה של מכשיר OAuth 2.0, https://oauth2.googleapis.com/device/code . כלול את זיהוי הלקוח שלך ואת רשימת היקפים הדרושים לך בבקשה. אם אתה רוצה להיכנס למשתמשים רק עם חשבונות Google שלהם, בקש רק את טווח profile email ; או, אם ברצונך לבקש הרשאה להתקשר לממשק API נתמך בשם המשתמשים, בקש את ההיקפים הנדרשים בנוסף להיקפי profile email .

להלן דוגמה לבקשת קוד משתמש:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

שימוש curl :

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

התגובה מוחזרת כאובייקט JSON:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

האפליקציה שלך מציגה בפני user_code את הערך user_code ו- verification_url ובמקביל user_code את נקודת הקצה של הכניסה interval שצוין עד שהמשתמש expires_in לחשבון או שהזמן שצוין על ידי expires_in חלף.

הצגת קוד המשתמש וכתובת האתר לאימות

לאחר שתקבל קוד משתמש וכתובת אתר לאימות מנקודת הקצה של המכשיר, הצג אותם והנחה למשתמש לפתוח את כתובת האתר ולהזין את קוד המשתמש.

הערכים של verification_url ו- user_code כפופים לשינויים. תכנן את ממשק המשתמש שלך באופן שיכול להתמודד עם המגבלות הבאות:

  • user_code חייב להיות מוצג בשדה רחב מספיק כדי להתמודד עם 15 תווים בגודל W
  • verification_url חייב להיות מוצג בשדה רחב מספיק בכדי לטפל במחרוזת URL שאורכה 40 תווים.

שני המחרוזות יכולות להכיל כל תו להדפסה מתוך ערכת התווים US-ASCII.

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

תוכל לשנות את מחרוזת verification_url ידי ביטול התוכנית מכתובת האתר למטרות תצוגה אם תבחר. אם כן, ודא שהאפליקציה שלך יכולה להתמודד עם גרסאות "http" ו- "https". אל תשנה אחרת את מחרוזת verification_url .

כאשר המשתמש מנווט לכתובת ה- URL לאימות, הוא רואה דף הדומה לדברים הבאים:

חבר מכשיר על ידי הזנת קוד

לאחר שהמשתמש מזין את קוד המשתמש, אתר הכניסה של גוגל מציג מסך הסכמה דומה לזה:

מסך הסכמה לדוגמא עבור לקוח מכשיר

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

השג אסימון מזהה ורענון אסימון

לאחר שהאפליקציה שלך מציגה את קוד המשתמש ואת כתובת האימות, התחל לסקור את נקודת הקצה האסימונית ( https://oauth2.googleapis.com/token ) באמצעות קוד המכשיר שקיבלת מנקודת הקצה של המכשיר. סקר את נקודת הקצה של האסימון במרווח, בשניות, שצוין על ידי ערך interval .

להלן בקשה לדוגמא:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

שימוש curl :

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

אם המשתמש טרם אישר את הבקשה, התגובה היא כדלקמן:

{
  "error" : "authorization_pending"
}

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

{
  "error" : "slow_down"
}

לאחר שהמשתמש נכנס ומעניק גישה לאפליקציה שלך להיקפים שביקשת, התגובה לבקשה הבאה של האפליקציה שלך כוללת אסימון מזהה, אסימון גישה ואסימון רענון:

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

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

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

קבל מידע על פרופיל משתמש מסימן הזיהוי

תוכל לקבל מידע על פרופיל על המשתמש המחובר על ידי פענוח אסימון הזיהוי עם כל ספריית פענוח JWT . לדוגמה, שימוש בספריית JavaScript Auth0 jwt-decode :

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

עוד מידע

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