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