המדריך למפתחים: JavaScript

Blogger Data API מאפשר לאפליקציות לקוח להציג ולעדכן תוכן ב-Blogger בצורת פידים של Google Data API.

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

בנוסף למידע על היכולות של Blogger Data API, במסמך הזה מפורטות דוגמאות לאינטראקציות בסיסיות עם Data API באמצעות ספריית הלקוח של JavaScript. אם רוצים לדעת עוד על הנושאים האלה, פרוטוקול הבסיס שבו הספרייה משתמשת, אפשר לקרוא את הקטע 'פרוטוקול' המדריך הזה למפתחים.

תוכן עניינים

קהל

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

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

למידע נוסף על המחלקות והשיטות שמסופקות על ידי ספריית הלקוח, ראו API של ספריית הלקוח ב-JavaScript .

המסמך הזה נועד לקריאה לפי הסדר; כל דוגמה מתבססת על דוגמאות קודמות.

תנאים והגבלות

השימוש בספריית הלקוח של JavaScript מבטא את הסכמתכם לפעול בהתאם לתנאי השימוש בספריית הלקוח של Google JavaScript.

מידע על סביבות נתמכות

בשלב זה אנחנו תומכים רק באפליקציות לקוח של JavaScript שפועלות בדף אינטרנט בדפדפן. נכון לעכשיו, הדפדפנים הנתמכים הם Firefox מגרסה 1.5 ואילך ו-Internet Explorer מגרסה 6.0 ואילך.

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

תחילת העבודה

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

יצירת חשבון Blogger

כדאי להירשם חשבון Blogger למטרות בדיקה. Blogger משתמש בחשבונות Google, כך שאם כבר יש לך חשבון Google, הכול מוכן.

רכישת הספרייה

כדי שהלקוח שלך יוכל להשתמש בספריית הלקוח, הוא צריך לבקש את הקוד של ספריית הלקוח מהשרת.

מתחילים באמצעות תג <script> בקטע <head> במסמך ה-HTML כדי לאחזר את מערך הטעינה של Google AJAX API:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

כדי לקבל את ספריית הלקוח של Google Data API אחרי אחזור ה-loader, משתמשים בשורה הבאה בקוד ההגדרה של JavaScript. צריך לבצע את הקריאה מהקטע <head> במסמך ה-HTML (או מקובץ JavaScript שכלול באמצעות תג <script> בקטע <head> במסמך ה-HTML):

google.load("gdata", "1.x");

הפרמטר השני של הערך google.load() הוא הגרסה המבוקשת המספר של ספריית הלקוח של JavaScript.סכימת מספור הגרסאות שלנו מחושב לפי המודל שמשמש את Google Maps API. אלה מספרי הגרסאות האפשריים והמשמעות שלהם:

"1"
הגרסה השנייה מתוך שתי הגרסאות האחרונות של הגרסה הראשית 1.
"1.x"
הגרסה האחרונה ביותר של גרסת המשנה 1.
"1.s"
הגרסה היציבה האחרונה של הגרסה הראשית 1. מדי פעם מצהירים שגרסה מסוימת של ספריית הלקוח היא "יציבה", על סמך המשוב שאנחנו מקבלים ממפתחים. עם זאת, יכול להיות שהגרסה הזו לא תכלול את התכונות העדכניות ביותר.
"1.0",‏ "1.1" וכו'
גרסה ספציפית של הספרייה, עם מספר גרסה ראשי ומשני ספציפיים.

לאחר התקשרות אל google.load(), יש להנחות את הטוען להמתין עד שטעינת הדף תסתיים ולאחר מכן להתקשר לקוד שלך:

google.setOnLoadCallback(getMyBlogFeed);

כאשר getMyBlogFeed() הוא פונקציה שנגדיר בהמשך במאמר הזה. השתמשו בגישה הזאת במקום ה-handler של onload מצורף אל <body> לרכיב מסוים.

אימות מול שירות Blogger

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

ספריית הלקוח של JavaScript משתמשת במערכת האימות AuthSub. למידע נוסף על אימות באמצעות Google Data APIs באופן כללי, תוכלו לעיין במסמכי התיעוד בנושא אימות.

אימות שרת proxy של AuthSub

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

הנה סקירה קצרה של מה שקורה בתהליך האימות של לקוח JavaScript מבוסס-אינטרנט:

  1. אפליקציית הלקוח מפעילה את השיטה google.accounts.user.login() שמספקת ספריית הלקוח, ומעבירה לה ערך 'היקף' שמציין באיזה שירות של Google להשתמש. ב-Blogger, ההיקף הוא "http://www.blogger.com/feeds/"
  2. ספריית הלקוח שולחת את הדפדפן ל"גישה" של Google בקשה" שבו המשתמש יכול להזין את פרטי הכניסה שלו כדי להתחבר. את השירות.
  3. אם המשתמש יתחבר בהצלחה, מערכת AuthSub תשלח את הדפדפן בחזרה לכתובת ה-URL של לקוח האינטרנט, ומעביר את האימות ב-Assistant.
  4. ספריית הלקוח של JavaScript שומרת את האסימון בקובץ cookie ומחזירה את השליטה לפונקציה של אפליקציית הלקוח שביצעה את הקריאה ל-google.accounts.user.login().
  5. כשאפליקציית הלקוח קוראת בהמשך לשיטות של ספריית הלקוח שמקיימות אינטראקציה עם Blogger, ספריית הלקוח מצרפת את האסימון באופן אוטומטי לכל הבקשות.

הערה: כדי שספריית הלקוח של JavaScript תוכל לשלוח בקשות מאומתות ל-Blogger בדפדפן אינטרנט, הדף צריך להכיל תמונה שמתארחת באותו דומיין שבו נמצא הדף. היא יכולה להיות כל תמונה, אפילו תמונה שקופה בגודל פיקסל יחיד, אך חייבת להופיע תמונה בדף. אם אתם לא רוצים שהתמונה תופיע בדף, תוכלו להשתמש במאפיין style של התג <img> כדי למקם את התמונה מחוץ לאזור הרינדור. לדוגמה: style="position:absolute; top: -1000px;"

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

function logMeIn() {
  scope = "http://www.blogger.com/feeds/";
  var token = google.accounts.user.login(scope);
}

function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
  logMeIn();
  return myService;
}

טיפ: מומלץ מאוד לספק לחצן כניסה או מנגנון אחר להזנת משתמש כדי לבקש מהמשתמש להתחיל את תהליך הכניסה באופן ידני. אם במקום זאת תפעילו את google.accounts.user.login() מיד אחרי הטעינה, בלי להמתין לאינטראקציה של המשתמש, הדבר הראשון שהמשתמש יראה כשהדף ייטען יהיה דף התחברות ל-Google. אם המשתמש מחליט לא להיכנס לחשבון, Google לא מפנה אותו חזרה לדף שלכם. לכן, מנקודת המבט של המשתמש, הוא ניסה להיכנס לדף שלכם אבל הופנה לדף אחר ולא הוחזר לדף שלכם. בתרחיש הזה עלול לבלבל את המשתמשים ולתסכל. בקוד לדוגמה במסמך הזה, נפעיל את google.accounts.user.login() מיד אחרי הטעינה כדי לשמור על פשטות הדוגמה, אבל אנחנו לא ממליצים על הגישה הזו לאפליקציות לקוח בעולם האמיתי.

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

הערה: כשיוצרים שירות BloggerService חדש לאובייקט, ספריית הלקוח קוראת לשיטה google.gdata.client.init(), שבודק אם הדפדפן פועל ב- נתמך. אם יש שגיאה, ספריית הלקוח מציגה הודעת שגיאה למשתמש. אם אתם רוצים לטפל בעצמכם בשגיאות כאלה, תוכלו לבצע קריאה מפורשת ל-google.gdata.client.init(handleInitError) לפני יצירת השירות, כאשר handleInitError() היא הפונקציה שלכם. אם מתרחשת שגיאה ב-init, הפונקציה מקבלת אובייקט Error רגיל. אפשר לעשות עם האובייקט הזה מה שרוצים.

האסימון יישאר בתוקף עד שתבטל אותו באמצעות קריאה google.accounts.user.logout():

function logMeOut() {
  google.accounts.user.logout();
}

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

עם זאת, יש נסיבות חריגות מסוימות שבהן אסימון יכול להפוך לא תקף במהלך סשן. אם Blogger דוחה אסימון, הלקוח שלך צריך לטפל מצב השגיאה באמצעות קריאה ל-logout() כדי להסיר את קובץ ה-cookie שמכיל את האסימון הנוכחי, ואז קורא שוב ל-login() כדי לקבל אסימון חדש ותקף.

יש שתי שיטות AuthSub נוספות שעשויות להועיל לך ההקשרים:

  • הערך של google.accounts.user.checkLogin(scope) מציין אם לדפדפן יש כרגע אסימון אימות להיקף הנתון.
  • google.accounts.user.getInfo() מספק מידע מפורט על האסימון הנוכחי, לצורך ניפוי באגים.

לפרטים על השימוש ב-JavaScript לאינטראקציה עם AuthSub, כולל מידע על ניהול אסימונים ועל checkLogin() וגם getInfo(), כדאי לעיין במאמר שימוש 'AuthSub' אימות באמצעות ספריית הלקוח של JavaScript מהמסמך.

חזרה למעלה