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

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

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

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

เนื้อหา

กลุ่มเป้าหมาย

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

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

สําหรับข้อมูลอ้างอิงเกี่ยวกับคลาสและเมธอดที่ได้จากไลบรารีของไคลเอ็นต์ โปรดดูเอกสารอ้างอิง API ไลบรารี JavaScript

เอกสารนี้ออกแบบมาเพื่อให้อ่านตามลําดับ โดยแต่ละตัวอย่างจะสร้างขึ้นจากตัวอย่างก่อนหน้านี้

ข้อกำหนดในการใช้งาน

คุณตกลงที่จะปฏิบัติตามข้อกําหนดในการใช้งานไลบรารีของไคลเอ็นต์ Google JavaScript เมื่อใช้ไลบรารีของไคลเอ็นต์ 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 Maps API ใช้ หมายเลขเวอร์ชันที่เป็นไปได้และความหมายของตัวเลขมีดังนี้

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

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

google.setOnLoadCallback(getMyBlogFeed);

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

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

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

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

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

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

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

  1. แอปพลิเคชันไคลเอ็นต์เรียกใช้เมธอด google.accounts.user.login() ที่ไลบรารีไคลเอ็นต์ส่งมาพร้อมกับค่า "scope" ที่ระบุบริการของ Google ที่จะใช้ สําหรับ Blogger ขอบเขตคือ "http://www.blogger.com/feeds/"
  2. ไลบรารีของไคลเอ็นต์จะส่งเบราว์เซอร์ไปยังหน้า Google's "เข้าถึงคําขอ&การเสนอราคา; ซึ่งผู้ใช้ป้อนข้อมูลรับรองเพื่อเข้าสู่ระบบบริการได้
  3. หากผู้ใช้เข้าสู่ระบบสําเร็จ ระบบ AuthSub จะส่งเบราว์เซอร์กลับไปยัง URL ของเว็บไคลเอ็นต์โดยส่งโทเค็นการตรวจสอบสิทธิ์
  4. ไลบรารีของไคลเอ็นต์ JavaScript จะจัดเก็บโทเค็นไว้ในคุกกี้และแสดงผลการควบคุมไปยังฟังก์ชันของไคลเอ็นต์ที่ชื่อ 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 เกิดขึ้น ฟังก์ชันของคุณจะได้รับอ็อบเจ็กต์ข้อผิดพลาดมาตรฐาน คุณทําอะไรก็ได้ที่ต้องการกับออบเจ็กต์นั้น

โทเค็นจะยังคงใช้ได้จนกว่าคุณจะเพิกถอนโดยการเรียกใช้ 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

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