คู่มือสำหรับนักพัฒนาซอฟต์แวร์: JavaScript

Blogger Data API ช่วยให้แอปพลิเคชันไคลเอ็นต์สามารถดูและอัปเดตเนื้อหา Blogger ในรูปแบบของฟีด Google Data API

แอปพลิเคชันไคลเอ็นต์ของคุณสามารถใช้ Blogger Data API เพื่อสร้างบล็อกโพสต์ใหม่ แก้ไขหรือลบบล็อกโพสต์ที่มีอยู่ และค้นหาบล็อกโพสต์ที่ตรงกับเกณฑ์หนึ่งๆ

นอกเหนือจากการให้ข้อมูลเบื้องต้นเกี่ยวกับความสามารถของ API ข้อมูลของ Blogger แล้ว เอกสารนี้ยังมีตัวอย่างการโต้ตอบกับ Data API ขั้นพื้นฐานโดยใช้ไลบรารีไคลเอ็นต์ JavaScript หากคุณต้องการทำความเข้าใจเพิ่มเติมเกี่ยวกับโปรโตคอลพื้นฐานที่ไลบรารีใช้ โปรดดูที่ส่วนโปรโตคอลของคู่มือของนักพัฒนาซอฟต์แวร์นี้

เนื้อหา

ผู้ชม

เอกสารนี้มีไว้สำหรับโปรแกรมเมอร์ที่ต้องการเขียนแอปพลิเคชันไคลเอ็นต์ JavaScript ที่สามารถโต้ตอบกับ Blogger โดยจะมีชุดตัวอย่างการโต้ตอบกับ Data API พื้นฐานโดยใช้ไลบรารีไคลเอ็นต์ JavaScript

โปรดดูข้อมูลอ้างอิงของ Blogger Data API ที่คู่มืออ้างอิงโปรโตคอล เอกสารนี้มีสมมติฐานว่าคุณเข้าใจแนวคิดทั่วไปเบื้องหลังโปรโตคอล Google Data API รวมถึงโมเดลข้อมูลและโฟลว์การควบคุมที่ไลบรารีไคลเอ็นต์ 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 หลังจากดึงข้อมูลตัวโหลด ให้ใช้บรรทัดต่อไปนี้ในโค้ดการตั้งค่า JavaScript ของคุณ ซึ่งต้องเรียกใช้จากส่วน <head> ของเอกสาร HTML (หรือจากไฟล์ JavaScript ที่รวมอยู่โดยใช้แท็ก <script> ในส่วน <head> ของเอกสาร HTML)

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

พารามิเตอร์ที่ 2 ที่ส่งไปยัง google.load() คือหมายเลขเวอร์ชันที่ขอของไลบรารีไคลเอ็นต์ JavaScriptรูปแบบการกำหนดหมายเลขเวอร์ชันของเรา มีการจำลองจากรูปแบบที่ Google แผนที่ API ใช้ ต่อไปนี้คือหมายเลขเวอร์ชันที่เป็นไปได้ และความหมายของหมายเลขเหล่านั้น

"1"
การแก้ไขครั้งที่ 2 ถึงฉบับสุดท้ายของเวอร์ชันหลัก 1
"1.x"
การแก้ไขล่าสุดของเวอร์ชันหลัก 1
"1.s"
เวอร์ชันเสถียรล่าสุดของเวอร์ชันหลัก 1 ในบางครั้งเราจะประกาศเวอร์ชันไลบรารีของไคลเอ็นต์ให้เป็นแบบ "เสถียร" ในบางครั้ง โดยอิงตามความคิดเห็นที่ได้รับจากนักพัฒนาซอฟต์แวร์ แต่เวอร์ชันดังกล่าวอาจไม่มีฟีเจอร์ล่าสุด
"1.0", "1.1" และอื่นๆ
เวอร์ชันที่เจาะจงของไลบรารีซึ่งมีหมายเลขการแก้ไขหลักและรองที่ระบุไว้

หลังจากที่คุณเรียก google.load() แล้ว คุณต้องบอกตัวโหลดให้รอจนกว่าหน้าเว็บจะโหลดเสร็จ จากนั้นจึงเรียกใช้โค้ดของคุณ:

google.setOnLoadCallback(getMyBlogFeed);

โดย getMyBlogFeed() คือฟังก์ชันที่เราจะกำหนดในส่วนต่อไปของเอกสารนี้ ใช้วิธีการนี้แทนการมีเครื่องจัดการ onload แนบอยู่กับองค์ประกอบ <body>

การตรวจสอบสิทธิ์กับบริการ Blogger

คุณจะเข้าถึงทั้งฟีดสาธารณะและฟีดส่วนตัวได้โดยใช้ Blogger Data API ฟีดสาธารณะไม่จำเป็นต้องมีการตรวจสอบสิทธิ์ แต่จะเป็นแบบอ่านอย่างเดียว ถ้าคุณต้องการแก้ไขบล็อก ลูกค้าของคุณจะต้องตรวจสอบสิทธิ์ก่อนขอฟีดส่วนตัว

ไลบรารีของไคลเอ็นต์ JavaScript ใช้ระบบการตรวจสอบสิทธิ์ AuthSub โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์ทั่วไปด้วย Google Data API ในเอกสารประกอบการตรวจสอบสิทธิ์

การตรวจสอบสิทธิ์พร็อกซี AuthSub

เว็บแอปพลิเคชันที่จำเป็นต้องตรวจสอบสิทธิ์ผู้ใช้ในบัญชี Google จะใช้การตรวจสอบสิทธิ์พร็อกซี AuthSub ผู้ให้บริการเว็บไซต์และโค้ดไคลเอ็นต์ไม่มีสิทธิ์เข้าถึงชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ Blogger แต่ไคลเอ็นต์จะได้รับโทเค็น AuthSub พิเศษที่อนุญาตให้ไคลเอ็นต์ดำเนินการในนามของผู้ใช้รายหนึ่งได้

ต่อไปนี้คือภาพรวมคร่าวๆ ของสิ่งที่เกิดขึ้นในระหว่างขั้นตอนการตรวจสอบสิทธิ์สำหรับไคลเอ็นต์ JavaScript บนเว็บ

  1. แอปพลิเคชันไคลเอ็นต์เรียกใช้เมธอด google.accounts.user.login() ที่ไลบรารีของไคลเอ็นต์มีให้ โดยส่งค่า "ขอบเขต" ที่บ่งชี้ว่าจะใช้บริการของ Google ใด ขอบเขตสำหรับ Blogger คือ "http://www.blogger.com/feeds/"
  2. ไลบรารีของไคลเอ็นต์จะส่งเบราว์เซอร์ไปยังหน้า "คำขอเข้าถึง" ของ Google ซึ่งผู้ใช้จะป้อนข้อมูลเข้าสู่ระบบเพื่อเข้าสู่ระบบบริการได้
  3. หากผู้ใช้เข้าสู่ระบบสำเร็จ ระบบ AuthSub จะส่งเบราว์เซอร์กลับไปยัง URL ของเว็บไคลเอ็นต์ โดยส่งต่อโทเค็นการตรวจสอบสิทธิ์
  4. ไลบรารีของไคลเอ็นต์ JavaScript จะจัดเก็บโทเค็นไว้ในคุกกี้และส่งกลับตัวควบคุมไปยังฟังก์ชันของแอปพลิเคชันไคลเอ็นต์ที่เรียกว่า google.accounts.user.login()
  5. เมื่อแอปพลิเคชันไคลเอ็นต์เรียกใช้เมธอดไลบรารีของไคลเอ็นต์ที่โต้ตอบกับ Blogger ในภายหลัง ไลบรารีของไคลเอ็นต์จะแนบโทเค็นไปกับคำขอทั้งหมดโดยอัตโนมัติ

หมายเหตุ: เพื่อให้ไลบรารีของไคลเอ็นต์ JavaScript สร้างคำขอของ Blogger ที่ผ่านการตรวจสอบสิทธิ์ในเว็บเบราว์เซอร์ หน้าเว็บของคุณต้องมีรูปภาพที่โฮสต์อยู่ในโดเมนเดียวกับหน้าเว็บของคุณ ซึ่งจะเป็นรูปภาพใดก็ได้ หรือแม้กระทั่งรูปภาพโปร่งใสขนาด 1 พิกเซล แต่จะต้องมีรูปภาพอยู่บนหน้าเว็บด้วย หากต้องการให้รูปภาพไม่ปรากฏในหน้าเว็บ ให้ใช้แอตทริบิวต์ 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 ขึ้น ฟังก์ชันจะได้รับออบเจ็กต์ข้อผิดพลาดมาตรฐาน คุณจะทำอย่างไรก็ได้กับออบเจ็กต์นั้น

โทเค็นจะยังคงใช้ได้จนกว่าคุณจะเพิกถอนโดยการเรียกใช้ google.accounts.user.logout()

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

หากคุณไม่เรียกใช้ logout() คุกกี้ที่เก็บโทเค็นไว้จะคงอยู่นาน 2 ปี เว้นแต่ว่าผู้ใช้จะลบออก ระบบจะเก็บรักษาคุกกี้ไว้ในเซสชันของเบราว์เซอร์ต่างๆ เพื่อให้ผู้ใช้ปิดเบราว์เซอร์แล้วเปิดใหม่ จากนั้นจึงกลับมาที่ไคลเอ็นต์และพวกเขายังคงเข้าสู่ระบบอยู่

อย่างไรก็ตาม มีสถานการณ์ผิดปกติบางอย่างที่ทำให้โทเค็นอาจไม่ถูกต้องได้ในระหว่างเซสชัน หาก Blogger ปฏิเสธโทเค็น ไคลเอ็นต์ของคุณควรจัดการกับเงื่อนไขข้อผิดพลาดโดยการเรียกใช้ logout() เพื่อนำคุกกี้ที่มีโทเค็นปัจจุบันออก จากนั้นจึงเรียกใช้ login() อีกครั้งเพื่อรับโทเค็นใหม่ที่ถูกต้อง

ยังมีวิธี AuthSub อีก 2 วิธีที่อาจเป็นประโยชน์ในบริบทต่างๆ ดังนี้

  • google.accounts.user.checkLogin(scope) จะบอกคุณว่าปัจจุบันเบราว์เซอร์มีโทเค็นการตรวจสอบสิทธิ์สำหรับขอบเขตที่ระบุหรือไม่
  • google.accounts.user.getInfo() ให้ข้อมูลโดยละเอียดเกี่ยวกับโทเค็นปัจจุบันสำหรับการแก้ไขข้อบกพร่อง

ดูรายละเอียดเกี่ยวกับการใช้ JavaScript เพื่อโต้ตอบกับ AuthSub รวมถึงข้อมูลเกี่ยวกับการจัดการโทเค็นและบน checkLogin() และ getInfo() โปรดดูเอกสารการใช้การตรวจสอบสิทธิ์ "AuthSub" กับไลบรารีของไคลเอ็นต์ JavaScript

กลับไปด้านบน