Ikai Lan, YouTube Developer Relations – June 2013
ממשקי YouTube API משתמשים ב-OAuth 2.0 כדי לאשר בקשות של משתמשים. אנחנו מקבלים לעיתים קרובות שאלות לגבי האפשרות להוסיף תמיכה באימות ClientLogin או בפרוטוקול דומה בממשקי YouTube API בעתיד. עם זאת, הוצאנו משימוש באופן רשמי את ClientLogin החל מ-20 באפריל 2012, ואין תוכניות להוסיף מנגנון כזה.
יש הרבה סיבות לכך שלדעתנו תמיכה בזרמים שונים של הרשאות OAuth 2.0 טובה יותר למשתמשי YouTube מאשר ClientLogin. התהליכים האלה תומכים בתרחישי שימוש של אפליקציות למחשב, אפליקציות לאינטרנט בלבד, אפליקציות לנייד ילידיות ואפילו אפליקציות שפועלות במכשירים כמו טלוויזיות שאין בהן מנגנוני קלט מתוחכמים, דבר שקשה לעשות באמצעות ClientLogin. בנוסף, גילינו ש-ClientLogin גורם לבעיות נוספות למפתחים רבים לאחר ההשקה, חלק מהן מתוארות בפוסט שלנו בבלוג, ClientLogin #FAIL.
שימוש ב-OAuth 2.0 בסקריפטים עצמאיים בצד השרת
מפתחים רבים משתמשים ב-ClientLogin כדי להעניק הרשאה לסקריפטים של שורת הפקודה שפועלים בשרתים ללא דפדפן. ב-OAuth 2.0, כמעט תמיד מעורב דפדפן – למעט כשעובדים על אפליקציה ל-Android שמשתמשת ב-Google Play Services כדי לאחזר אסימונים דרך GoogleAuthUtil..
בתהליך אינטרנט בלבד, אתר שרוצה לבצע קריאות API מאומתות בשם משתמש צריך להפנות את המשתמש לדף אימות google.com שבו מוסבר לאילו נתונים האפליקציה מנסה לגשת. לאחר מכן, אפליקציית האינטרנט מקבלת אסימון שבו היא משתמשת כדי לבצע קריאות ל-API. לאחר מכן, המשתמש יכול לבטל את הגישה של האפליקציה בכל שלב באמצעות הדף connected apps and sites.
דוגמאות הקוד ב-Python שלנו מדגימות איך סקריפטים של שורת הפקודה יכולים להפעיל דפדפן ולבצע קריאות ל-API מחלון מסוף, ליצור שרת מקומי להאזנה לקוד אחרי ההפניה האוטומטית לאישור ולשמור אסימון באופן אוטומטי לקריאות עתידיות ל-API. בהמשך מופיע סרטון שמראה איך זה עובד:
הטוקן שבו נעשה שימוש הוא מחרוזת ASCII. אם מדובר באסימון offline
, הוא נייד. באמצעות האסימון שאוחזר, תוכלו להריץ את הסקריפט במחשב, ולאחר מכן להעתיק את הקוד ולהשתמש בו בשרת מרוחק ללא ממשק משתמש גרפי, בתנאי שהקוד יוצר מופע של לקוח OAuth 2.0 עם אותו מזהה לקוח וסוד. בנוסף ל-Python, ספריות הלקוח של Google API לשפות תכנות אחרות מספקות גם שיטות עזר לניהול אסימונים, שאפשר לשתף ביניהם ואפילו להשתמש בהן בספריות HTTP ברמה נמוכה יותר ישירות בכותרת לקוח או כפרמטר של כתובת URL.
דוגמאות לסקריפטים בצד השרת שמשתמשים באסימונים אופליין:
- דימון (daemon) שמשגיח על ספרייה כדי לזהות סרטונים חדשים להעלאה אוטומטית ל-YouTube
- משימה ב-cron שמעדכנת פלייליסטים מדי יום בתוכן חדש
- סקריפט שמנטר את נתוני הסרטונים דרך YouTube Analytics API ומתריע למנהלי הערוצים כשאירועים מסוימים מתרחשים, למשל כשמשך הצפייה המצטבר חורג מהמגבלה. חשוב לזכור שבמקרה כזה, OAuth 2.0 היא שיטת ההרשאה היחידה שנתמכת כי Analytics API לא תומך ב-ClientLogin.
בקטע אסימוני גישה לטווח ארוך מוסבר בפירוט איך ליצור את האסימונים אופליין שאפשר להשתמש בהם בתהליכים בצד השרת.
שיטות מומלצות לשימוש במזהה לקוח ובסוד לקוח
אפשר להשתמש באותם אסימוני גישה בכל קוד שיש לו את אותו מזהה לקוח וזוג מפתחות סודיים. מומלץ להגביל את הגישה למזהי לקוחות ולסודות לקוח לקוד שפועל במכונות ובמכשירים בארגון.
אל תכללו את מזהה הלקוח ואת סוד הלקוח כחלק מקוד האפליקציות לנייד. כל המפתחים שמבצעים אימות OAuth 2.0 ממכשיר נייד צריכים להשתמש במזהה הלקוח 'אפליקציה מותקנת', שבו מופיעה בקשה למידע נוסף כדי לאמת שהבקשה מגיעה רק מאפליקציה שהצוות שלכם פרסם.
במכשירי Android, במקום להשתמש במזהה לקוח ובסוד לקוח, האפליקציה מזוהה באמצעות שילוב של שם החבילה וגיבוב של אישור החתימה. במכשירי iOS, נעשה שימוש במזהה החבילה ובמזהה החנות של האפליקציה. המסמכים הרשמיים בנושא אחזור המידע הזה זמינים בדף העזרה של Google API Console.
חשבונות שירות לא פועלים עם YouTube API
חשבונות שירות לא פועלים בקריאות ל-YouTube Data API כי חשבונות שירות דורשים ערוץ YouTube משויך, ואי אפשר לשייך חשבונות חדשים או קיימים לחשבונות שירות. אם משתמשים בחשבון שירות כדי לבצע קריאה ל-YouTube Data API, שרת ה-API מחזיר שגיאה עם סוג השגיאה unauthorized
והסיבה youtubeSignupRequired
.
גישה ל-YouTube API במצב אופליין או לטווח ארוך
ב-OAuth 2.0 יש אסימונים לטווח קצר ואסימונים לטווח ארוך. לפעולות חד-פעמיות, אסימוני גישה לטווח קצר הם האפשרות הטובה ביותר. התוקף של האסימונים האלה פג זמן קצר לאחר שהם ניתנים. למשימות ממושכות, כדאי לקבל אסימון רענון, שמשמש לאחזור אסימוני גישה לטווח קצר.
כדי לוודא שהאפליקציה תקבל אסימון רענון לטווח ארוך ולא אסימון גישה לטווח קצר, צריך להשתמש בתהליך 'אפליקציה מותקנת' כשיוצרים מזהה לקוח, ולבחור באפשרות Other
לערך 'סוג האפליקציה המותקנת':
מומלץ להשתמש בתהליך 'אפליקציה מותקנת' בתרחיש לדוגמה הזה. אם אתם צריכים גישה לטווח ארוך ל-YouTube API באפליקציית אינטרנט, תוכלו לאחזר אותה על ידי הגדרת הפרמטר access_type
לערך offline
והפרמטר approval_prompt
לערך force
בבקשת ההרשאה הראשונית או בתצורת הלקוח. ספריות לקוח מסוימות ינהלו את אחזור אסימוני הגישה ועדכון שלהם. אם אתם רוצים לכתוב קוד הרשאה מותאם אישית משלכם, פרסמנו פוסט בבלוג של Google Code שאפשר להשתמש בו כבסיס לקוד שלכם.
שימוש ב-OAuth 2.0 בטלפונים, בטאבלטים ובמכשירים אחרים
כשכותבים אפליקציות ל-Android, מפתחים יכולים להשתמש ב-Google Play services כדי לטפל בפרטי ההרשאה. שירות Google Play Services מציע תהליך הרשאה סטנדרטי לכל ממשקי Google API, כולל ממשקי API לפלטפורמת YouTube. הגישה הזו תספק למשתמשים באפליקציה ל-Android חוויית משתמש טובה בהרבה מאשר אימות מותאם אישית באמצעות ClientLogin.
במכשירי iOS, Google מספקת שתי אפשרויות:
- Google+ Platform for iOS, שמאפשרת כניסה למוצרי Google ומפעילה גם תכונות חברתיות
- gtm-oauth2 toolkit, שמספק הרשאה UIWebView ומנהל את הטוקנים
במכשירים שנועדו לשמש כ'מסך שני' או במכשירים כמו טלוויזיות ללא מנגנוני קלט נוחים לשימוש, הגישה המועדפת היא OAuth 2.0 למכשירים. OAuth 2.0 למכשירים פועל על ידי הצגת קוד ייחודי למשתמש כשנדרשת בקשת הרשאה. בשלב הזה, המשתמשים מתבקשים לעבור אל http://google.com/device במכשיר אחר, כמו מחשב נייד או טלפון, ולהזין את הקוד הייחודי. האפליקציה מציגה מסך שנראה בערך כך:
בזמן שהמשתמש מזין את הקוד במכשיר אחר, האפליקציה בודקת מדי פעם אם הקוד הוזן. לאחר מכן, הוא מאחזר אסימון לצורך ביצוע קריאות ל-API. כדי לראות איך זה עובד, אפשר להיעזר בהדגמה, שאפשר להריץ בכל מכשיר עם חיבור לאינטרנט. ה-API עצמו לא תלוי בפלטפורמה, ולכן הוא שימושי במכשירים שאין להם יכולות עיבוד באינטרנט. פרסמנו קוד לדוגמה ב-Python להדגמה, לשימוש כחומר עזר.
סיכום
הרשאה לפי OAuth 2.0 מספקת גמישות למפתחים שזקוקים להרשאה מ-YouTube. מפתחים שמכירים את ClientLogin עשויים לגלות שהגדרת האפליקציות שלהם לשימוש ב-OAuth 2.0 דורשת קצת יותר עבודה בהתחלה, אבל אחרי ההעברה, אפליקציות OAuth 2.0 מציעות למשתמשים גמישות, אבטחה ונוחות שימוש רבה יותר בכמה פלטפורמות.
אם יש לכם שאלות נוספות על OAuth 2.0 או על אחת מהדוגמאות במאמר הזה, אתם יכולים לפרסם אותן עם התג youtube-api ב-StackOverflow.