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 גורם להרבה יותר בעיות למפתחים אחרי ההשקה.
שימוש ב-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.
כמה דוגמאות לסקריפטים בצד השרת שמשתמשים באסימוני אופליין:
- דמון שמנטר ספרייה כדי להעלות אוטומטית סרטונים חדשים ל-YouTube
- משימת cron שמעדכנת פלייליסטים כל יום עם תוכן חדש
- סקריפט שעוקב אחרי נתוני סרטונים באמצעות YouTube Analytics API ושולח הודעה למנהלי הערוץ כשמתרחשים אירועים מסוימים, כמו חריגה ממגבלה של זמן צפייה מצטבר. שימו לב שבמקרה הזה, OAuth 2.0 היא שיטת ההרשאה היחידה שנתמכת כי Analytics API לא תומך ב-ClientLogin.
בקטע בנושא טוקנים לגישה לטווח ארוך יש פרטים נוספים על יצירת טוקנים אופליין שאפשר להשתמש בהם בתהליכים בצד השרת.
שיטות מומלצות לשימוש במזהה לקוח ובסוד לקוח
כל קוד שמשתף את אותו מזהה לקוח ואותו צמד סודות יכול להשתמש באותם טוקנים של גישה. מומלץ להגביל את הגישה למזהה הלקוח ולסודות הלקוח לקוד שפועל במכונות ובמכשירים בארגון.
אל תכללו את מזהה הלקוח ואת סוד הלקוח כחלק מהקוד של האפליקציות המקוריות לנייד. כל המפתחים שמבצעים אימות OAuth 2.0 ממכשיר נייד צריכים להשתמש במזהה הלקוח 'אפליקציה מותקנת', שדורש מידע נוסף כדי לוודא שהבקשה מגיעה רק מאפליקציה שפורסמה על ידי הצוות שלכם.

במכשירי Android, במקום להשתמש במזהה לקוח ובסוד לקוח, האפליקציה מזוהה באמצעות שילוב של שם החבילה וגיבוב של אישור חתימה. במכשירי iOS נעשה שימוש במזהה החבילה ובמזהה של חנות האפליקציות. התיעוד הרשמי בנושא אחזור המידע הזה זמין בדף העזרה של Google Cloud console.
אי אפשר להשתמש בחשבונות שירות עם YouTube API
אי אפשר להשתמש בחשבונות שירות לקריאות ל-YouTube Data API כי חשבונות שירות דורשים ערוץ YouTube משויך, ואי אפשר לשייך ערוצים חדשים או קיימים לחשבונות שירות. אם משתמשים בחשבון שירות כדי לבצע קריאה ל-YouTube Data API, שרת ה-API מחזיר שגיאה עם סוג השגיאה unauthorized והסיבה youtubeSignupRequired.
גישה ארוכת טווח או גישה במצב אופליין ל-YouTube API
ב-OAuth 2.0 יש טוקנים לטווח קצר וטוקנים לטווח ארוך. לפעולות חד-פעמיות, אסימוני גישה לטווח קצר הם האפשרות הטובה ביותר. התוקף של האסימונים האלה פג זמן קצר אחרי שהם מוענקים. לגבי משימות שפועלות לאורך זמן, כדאי לשקול להשיג אסימון רענון, שמשמש לאחזור אסימוני גישה לטווח קצר.
כדי לוודא שהאפליקציה מקבלת אסימון רענון לטווח ארוך ולא אסימון גישה לטווח קצר, צריך להשתמש בתהליך 'אפליקציה מותקנת' כשיוצרים Client-ID, ולבחור באפשרות 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.

Google מספקת שתי אפשרויות במכשירי iOS:
- התג 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 או לגבי אחת מהדוגמאות במאמר הזה, אתם מוזמנים לשאול אותן ב-StackOverflow עם התג youtube-api.