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

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

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

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

เนื้อหา

ผู้ชม

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

โปรดดูข้อมูลอ้างอิงของ Blogger Data API ที่คู่มืออ้างอิงโปรโตคอล เอกสารนี้ ถือว่าคุณเข้าใจแนวคิดทั่วไปที่อยู่เบื้องหลัง 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 เพื่อดึงข้อมูลโปรแกรมโหลด AJAX API ของ Google

<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"
การแก้ไขครั้งที่ 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

เว็บแอปพลิเคชันที่จำเป็นต้องใช้การตรวจสอบสิทธิ์พร็อกซี AuthSub ตรวจสอบสิทธิ์ผู้ใช้ในบัญชี Google ผู้ให้บริการเว็บไซต์และลูกค้า ไม่สามารถเข้าถึงชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้บล็อกเกอร์ แต่ไคลเอ็นต์จะได้รับโทเค็น 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() คือฟังก์ชัน หากเกิดข้อผิดพลาดในการเริ่มต้น ฟังก์ชันของคุณจะได้รับออบเจ็กต์ Error มาตรฐาน ซึ่งคุณจะทำสิ่งใดก็ได้กับออบเจ็กต์นั้น

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

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

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

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

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

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

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

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