Blogger Data API ช่วยให้แอปพลิเคชันไคลเอ็นต์สามารถดูและอัปเดตเนื้อหา Blogger ในรูปแบบของฟีด Google Data API
แอปพลิเคชันไคลเอ็นต์ของคุณสามารถใช้ Blogger Data API เพื่อสร้างบล็อกโพสต์ใหม่ แก้ไขหรือลบบล็อกโพสต์ที่มีอยู่ และค้นหาบล็อกโพสต์ที่ตรงกับเกณฑ์หนึ่งๆ
นอกจากการให้ข้อมูลพื้นฐานเกี่ยวกับความสามารถของ Blogger Data API แล้ว เอกสารนี้ยังมีตัวอย่างการโต้ตอบกับ Data API ขั้นพื้นฐานโดยใช้ไลบรารีไคลเอ็นต์ Zend Google Data API อีกด้วย หากคุณต้องการทำความเข้าใจเพิ่มเติมเกี่ยวกับโปรโตคอลพื้นฐานที่ไลบรารีใช้ โปรดดูที่ส่วนโปรโตคอลในคู่มือของนักพัฒนาซอฟต์แวร์นี้
เนื้อหา
ผู้ชม
เอกสารนี้มีไว้สำหรับโปรแกรมเมอร์ที่ต้องการเขียนแอปพลิเคชันไคลเอ็นต์ PHP ที่สามารถโต้ตอบกับ Blogger ได้
เอกสารนี้ถือว่าคุณเข้าใจแนวคิดทั่วไปเบื้องหลังโปรโตคอล Google Data API
ดูข้อมูลอ้างอิงเกี่ยวกับคลาสและเมธอดที่ได้จากไลบรารีของไคลเอ็นต์ได้ที่ข้อมูลอ้างอิง API ไลบรารีของไคลเอ็นต์ PHP ดูข้อมูลทั่วไปสำหรับข้อมูลอ้างอิง Blogger Data API ได้ที่คู่มืออ้างอิงโปรโตคอล
เริ่มต้นใช้งาน
หากต้องการความช่วยเหลือในการตั้งค่าไลบรารีของไคลเอ็นต์ โปรดดูคู่มือเริ่มต้นใช้งาน
ไลบรารีของไคลเอ็นต์ Zend ต้องใช้ PHP 5.1.4 หรือใหม่กว่า โดยจะพร้อมใช้งานโดยเป็นส่วนหนึ่งของ Zend Framework รวมถึงเป็นการดาวน์โหลดแยกต่างหากด้วย หากต้องการโต้ตอบกับ Blogger ให้ใช้ไลบรารีของไคลเอ็นต์เวอร์ชัน 1.0.0 ขึ้นไป
การสร้างบัญชี Blogger
คุณอาจต้องการลงชื่อสมัครใช้บัญชี Blogger เพื่อการทดสอบ Blogger ใช้บัญชี Google ดังนั้นหากคุณมีบัญชี Google อยู่แล้ว คุณก็ใช้งานได้เลย
การเรียกใช้โค้ดตัวอย่าง
ไคลเอ็นต์ตัวอย่างที่ใช้งานได้เต็มรูปแบบซึ่งมีโค้ดตัวอย่างทั้งหมดที่แสดงในเอกสารนี้พร้อมให้ใช้งานในที่เก็บ SVN ของ Zend Framework คุณสามารถดูตัวอย่างได้ที่ /framework/standard/trunk/demos/Zend/Gdata/Blogger.php ตัวอย่างมีฟังก์ชันทั้งหมดที่อธิบายในเอกสารนี้ ซึ่งจะเรียกใช้ได้จากบรรทัดคำสั่งเท่านั้น
php Blogger.php -- --user=[email_address] --pass=[password]
ก่อนที่จะเรียกใช้ตัวอย่างนี้หรือพัฒนาโค้ดของคุณเองโดยใช้เฟรมเวิร์ก Zend คุณอาจต้องตั้งค่า include_path
และโหลดคลาสที่เหมาะสม คุณตั้งค่าเส้นทางรวมได้โดยใช้การตั้งค่า php.ini หรือใช้เมธอด set_include_path โค้ดนี้จะขอสิทธิ์เข้าถึงคลาส Zend_Gdata หลัก คลาส Zend_Gdata_Query และคลาสการตรวจสอบสิทธิ์ Zend_Gdata_ClientLogin
require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata'); Zend_Loader::loadClass('Zend_Gdata_Query'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
การใช้ Magic Getters และ Setters
ในไลบรารีของไคลเอ็นต์ PHP มีการเพิ่มการสนับสนุนสำหรับการตั้งค่า/เครื่องมือวิเศษเพื่ออำนวยความสะดวกสำหรับนักพัฒนาซอฟต์แวร์ วิธีนี้จะช่วยให้เข้าถึงพร็อพเพอร์ตี้ของคลาสได้อย่างปลอดภัยโดยใช้เมธอดตัวตั้งค่า/ตัวตั้งค่าแบบดั้งเดิม หรือโดยการเข้าถึงพร็อพเพอร์ตี้ดังกล่าว ตัวอย่างเช่น หาก $gdataObject
เป็นอินสแตนซ์ของออบเจ็กต์ในไลบรารีนี้ โค้ด 2 บรรทัดต่อไปนี้มีผลกระทบเหมือนกัน
$gdataObject->setFoo("bar"); $gdataObject->foo = "bar";
โค้ดสองบรรทัดนี้ยังมีผลที่เหมือนกันด้วย:
$baz = $gdataObject->getFoo(); $baz = $gdataObject->foo;
ในทำนองเดียวกัน วิธีการของโรงงานเวทมนตร์ทำให้การประกาศวัตถุใหม่ง่ายขึ้น แทนที่จะจำชื่อคลาสแบบยาวตามแบบแผนการตั้งชื่อ Zend คุณจะสร้าง object
ใหม่ได้โดยเรียกใช้ newObject();
ในไคลเอ็นต์บริการ Zend ตัวอย่างเช่น ข้อมูลโค้ด 2 รายการต่อไปนี้ประกาศออบเจ็กต์ส่วนขยาย draft
ใหม่ คุณจะเห็นข้อมูลเพิ่มเติมเกี่ยวกับ drafts
ในส่วนการสร้างโพสต์
// Traditional instantiation $gdClient = new Zend_Gdata(); $draft = new Zend_Gdata_App_Extension_Draft(); // Magic factory instantiation $gdClient = new Zend_Gdata(); $draft = $gdClient->newDraft();
เครื่องมือจัดตั้ง/อุปกรณ์มายากลและโรงงานเป็นตัวเลือกที่ไม่บังคับ ดังนั้นให้ใช้วิธีการใดก็ได้ที่เหมาะกับคุณที่สุด
แหล่งข้อมูลอื่นๆ
ทรัพยากรอื่นๆ สำหรับคอมโพเนนต์ Google Data API ของ Zend Framework (Zend_Gdata)
- เอกสารอ้างอิง
- ข้อมูลรายชื่ออีเมลและที่เก็บถาวร
- ข้อมูลการโค่นล้มของ Zend Framework
- สแนปชอต Nightly ของ Zend Framework
การตรวจสอบสิทธิ์กับบริการ Blogger
คุณจะเข้าถึงทั้งฟีดสาธารณะและฟีดส่วนตัวได้โดยใช้ Blogger Data API ฟีดสาธารณะไม่จำเป็นต้องมีการตรวจสอบสิทธิ์ แต่จะเป็นแบบอ่านอย่างเดียว ถ้าคุณต้องการแก้ไขบล็อก ลูกค้าของคุณจะต้องตรวจสอบสิทธิ์ก่อนขอฟีดส่วนตัว โดยจะตรวจสอบสิทธิ์ได้โดยใช้ 3 วิธี ได้แก่ การตรวจสอบสิทธิ์ OAuth, การตรวจสอบสิทธิ์พร็อกซี AuthSub หรือการตรวจสอบสิทธิ์ชื่อผู้ใช้/รหัสผ่าน ClientLogin
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์ด้วย Google Data API โดยทั่วไปได้ในเอกสารประกอบการตรวจสอบสิทธิ์
ตัวอย่างส่วนใหญ่ในส่วนต่อๆ ไปของเอกสารนี้จะถือว่าคุณมีออบเจ็กต์ไคลเอ็นต์ที่ตรวจสอบสิทธิ์แล้วที่ชื่อว่า $gdClient
การตรวจสอบสิทธิ์ OAuth
โปรดดูเอกสารประกอบเกี่ยวกับการตรวจสอบสิทธิ์ OAuth โดยใช้ไลบรารี Zend PHP GData ที่ OAuth ในไลบรารีของไคลเอ็นต์ Google Data Protocol
การตรวจสอบสิทธิ์พร็อกซี AuthSub
เว็บแอปพลิเคชันที่จำเป็นต้องตรวจสอบสิทธิ์ผู้ใช้ในบัญชี Google จะใช้การตรวจสอบสิทธิ์พร็อกซี AuthSub ผู้ให้บริการเว็บไซต์และโค้ดไคลเอ็นต์ไม่มีสิทธิ์เข้าถึงชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ Blogger แต่ไคลเอ็นต์จะได้รับโทเค็น AuthSub พิเศษที่อนุญาตให้ไคลเอ็นต์ดำเนินการในนามของผู้ใช้รายหนึ่งได้ สำหรับข้อมูลโดยละเอียด โปรดดูเอกสาร AuthSub
เมื่อผู้ใช้เข้าชมแอปพลิเคชันเป็นครั้งแรก แสดงว่ายังไม่มีการตรวจสอบสิทธิ์ ในกรณีนี้ คุณต้องแสดงข้อมูลบางส่วนและลิงก์ที่นำผู้ใช้ไปยังหน้า Google เพื่อตรวจสอบสิทธิ์คำขอเข้าถึงบล็อกของผู้ใช้ ไลบรารีของไคลเอ็นต์ Zend มีฟังก์ชันในการสร้าง URL ของหน้าเว็บ Google โค้ดด้านล่างจะเรียก URL ของหน้า AuthSubRequest:
function getAuthSubUrl() { $next = getCurrentUrl(); $scope = 'http://www.google.com/blogger/feeds/'; $secure = false; $session = true; return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session); } $authSubUrl = getAuthSubUrl(); echo '<a href=\"$authSubUrl\">login to your Google account</a>';
เมธอด getAuthSubTokenUri
จะใช้พารามิเตอร์ต่อไปนี้ (ที่สอดคล้องกับพารามิเตอร์การค้นหาที่ตัวแฮนเดิล AuthSubRequest ใช้)
- ถัดไป
- URL ของหน้าเว็บที่ Google ควรเปลี่ยนเส้นทางผู้ใช้ไปหลังการตรวจสอบสิทธิ์
- ขอบเขต
- ระบุว่าแอปพลิเคชันกำลังขอโทเค็นเพื่อเข้าถึงฟีด Blogger สตริงขอบเขตที่จะใช้คือ
http://www.blogger.com/feeds/
(แน่นอนว่ามีการเข้ารหัส URL) - รักษาความปลอดภัย
- ระบุว่าไคลเอ็นต์กำลังขอโทเค็นที่ปลอดภัยหรือไม่
- เซสชัน
- ระบุว่าโทเค็นที่ส่งคืนสามารถแลกเปลี่ยนเป็นโทเค็นแบบใช้งานหลายครั้ง (เซสชัน) ได้หรือไม่
ตัวอย่างด้านบนแสดงการเรียกใช้ที่ไม่ได้ขอโทเค็นที่ปลอดภัย (ค่าของ secure
คือ false
) URL คำขอที่ได้อาจมีลักษณะดังนี้
https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.blogger.com%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fwelcome.php
ผู้ใช้จะไปตามลิงก์ไปยังเว็บไซต์ของ Google และตรวจสอบสิทธิ์ในบัญชี Google
หลังจากที่ผู้ใช้ตรวจสอบสิทธิ์แล้ว ระบบ AuthSub จะเปลี่ยนเส้นทางผู้ใช้ไปยัง URL ที่คุณระบุในพารามิเตอร์การค้นหา next
ของ AuthSubRequest URL ระบบ AuthSub จะเพิ่มโทเค็นการตรวจสอบสิทธิ์ต่อท้าย URL นั้นเป็นค่าของพารามิเตอร์การค้นหา token
เช่น
http://www.example.com/welcome.php?token=yourAuthToken
คุณเรียกข้อมูลค่าโทเค็นได้โดยใช้ $_GET['token']
ค่าโทเค็นนี้แสดงโทเค็น AuthSub แบบใช้ครั้งเดียว ในตัวอย่างนี้ เนื่องจากมีการระบุ $session = true
โทเค็นนี้จึงแลกเปลี่ยนกับโทเค็นเซสชัน AuthSub ได้โดยใช้เมธอด Zend_Gdata_AuthSub::getAuthSubSessionToken
ซึ่งเรียกใช้บริการ AuthSubSessionToken
if(! isset($_SESSION['sessionToken']) && isset($_GET['token'])) { $_SESSION['sessionToken'] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']); }
ข้อมูลโค้ดจะตรวจสอบก่อนว่ามีโทเค็นเซสชัน AuthSub อยู่แล้วหรือไม่ หากไม่ใช่ แต่มีการระบุโทเค็นแบบใช้ครั้งเดียวใน URL ข้อมูลโค้ดจะส่งโทเค็นแบบใช้ครั้งเดียวไปยังเมธอด getAuthSubSessionToken
และอินเทอร์เฟซ AuthSub จะส่งโทเค็นเซสชันกลับมา จากนั้นโค้ดจะป้อนค่าโทเค็นเซสชันในตัวแปรเซสชัน $_SESSION['sessionToken']
จากนั้นแอปพลิเคชันจะใช้ค่าโทเค็นเซสชันในการโต้ตอบกับ Blogger ในครั้งต่อๆ ไปได้ คุณใช้เมธอด Zend_Gdata_AuthSub::getHttpClient
เพื่อรับออบเจ็กต์ Zend_Http_Client
ที่มีค่าส่วนหัว Authorization
ที่กำหนดล่วงหน้าเพื่อรวมข้อมูลเข้าสู่ระบบ AuthSub ได้ ดังนี้
$client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);
การตรวจสอบสิทธิ์ชื่อผู้ใช้/รหัสผ่าน ClientLogin
ใช้การตรวจสอบสิทธิ์ ClientLogin หากไคลเอ็นต์เป็นไคลเอ็นต์ที่ "ติดตั้ง" สำหรับผู้ใช้รายเดียวแบบสแตนด์อโลน (เช่น แอปพลิเคชันบนเดสก์ท็อป)
โค้ดต่อไปนี้จะใช้เมธอด Zend_Gdata_ClientLogin::getHttpClient
เพื่อส่งคำขอไปยังบริการ ClientLogin, ดึงโทเค็นการตรวจสอบสิทธิ์ และสร้างออบเจ็กต์ Zend_Http_Client
ที่มีส่วนหัวการตรวจสอบสิทธิ์ที่เหมาะสม จากนั้นระบบจะใช้ HttpClient
ที่เมธอดนี้แสดงผลเพื่อสร้างออบเจ็กต์บริการ Zend_Gdata
โปรดสังเกตว่ามีการตั้งค่า $accountType
เป็น GOOGLE
อย่างชัดเจน หากไม่ตั้งค่าพารามิเตอร์นี้ ผู้ใช้ G Suite ไม่สามารถใช้ Blogger API ได้สำเร็จ
$user = 'user@example.com'; $pass = 'secretPasswd'; $service = 'blogger'; $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service, null, Zend_Gdata_ClientLogin::DEFAULT_SOURCE, null, null, Zend_Gdata_ClientLogin::CLIENTLOGIN_URI, 'GOOGLE'); $gdClient = new Zend_Gdata($client);
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์ ClientLogin รวมถึงตัวอย่างคำขอและการตอบกลับ โปรดดูเอกสารประกอบการตรวจสอบสิทธิ์สำหรับแอปพลิเคชันที่ติดตั้ง
หมายเหตุ: ใช้โทเค็นเดียวกันสำหรับคำขอทั้งหมดในเซสชันหนึ่งๆ อย่ารับโทเค็นใหม่สำหรับคำขอแต่ละรายการจาก Blogger
หมายเหตุ: ดังที่อธิบายไว้ในเอกสาร ClientLogin คำขอการตรวจสอบสิทธิ์อาจล้มเหลวและต้องขอคำท้า CAPTCHA หากต้องการให้ Google ออกและจัดการคำถาม CAPTCHA ให้ส่งผู้ใช้ไปที่ https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger
(แทนที่จะเป็น URL การจัดการ CAPTCHA ที่ให้ไว้ในเอกสาร ClientLogin)
เรียกดูรายการบล็อก
Blogger Data API มีฟีดที่แสดงรายการบล็อกสำหรับผู้ใช้ โดยฟีดนั้นเรียกว่า "metafeed"
โค้ดตัวอย่างต่อไปนี้ใช้ออบเจ็กต์ $gdClient
ที่ผ่านการตรวจสอบสิทธิ์เพื่อเรียกฟีดเมตาแล้วพิมพ์ชื่อของแต่ละบล็อก
คลาส Zend_Gdata_Query
จะเป็นผู้ดูแลการสร้าง URL การค้นหา ในกรณีนี้ คุณไม่จําเป็นต้องดําเนินการใดๆ เพิ่มเติม แต่ประโยชน์ของคลาส Query
จะแสดงให้เห็นในส่วนการดึงข้อมูลโพสต์ตามพารามิเตอร์การค้นหาของเอกสารนี้
function printAllBlogs() { $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/default/blogs'); $feed = $gdClient->getFeed($query); printFeed($feed); } function printFeed($feed) { $i = 0; foreach($feed->entries as $entry) { print $i ." ". $entry->title->text . "\n"; $i++; } }
จด URL ที่ใช้โดยเมธอด getFeed
นี่คือ URL ของฟีดเมตาเริ่มต้น ซึ่งจะแสดงรายการบล็อกของผู้ใช้ที่ตรวจสอบสิทธิ์แล้วในปัจจุบัน
หากต้องการเข้าถึงฟีดสำหรับผู้ใช้รายอื่น คุณสามารถใส่รหัสผู้ใช้แทน default
ใน URL ของฟีดเมตา รหัสของผู้ใช้คือสตริงตัวเลข
ที่ตอนท้ายของ URL โปรไฟล์ของผู้ใช้
ข้อมูลโค้ดด้านล่างแสดงวิธีดึงรหัสบล็อกจากฟีด คุณจะต้องใช้รหัสบล็อกในการสร้าง อัปเดต และลบโพสต์และความคิดเห็น ตัวแปร $index
แสดงถึงบล็อกในฟีดบล็อกของผู้ใช้ ช่อง id
จะใช้รูปแบบ tag:blogger.com,1999:user-userID.blog-blogID
ดังนั้น split
ที่อักขระ "-" จะวางรหัสบล็อกในองค์ประกอบสุดท้ายของอาร์เรย์ผลลัพธ์
$idText = split('-', $feed->entries[$index]->id->text); $blogID = $idText[2];
การสร้างโพสต์
Blogger Data API ช่วยให้คุณสามารถสร้างและเผยแพร่รายการบล็อกใหม่ รวมถึงสร้างแบบร่างของรายการ
หมายเหตุ: ปัจจุบันระบบยังไม่รองรับการตั้งค่าผู้เขียนที่กำหนดเองสำหรับโพสต์ โพสต์ใหม่ทั้งหมดจะปรากฏเหมือนกับว่าสร้างขึ้นโดยผู้ใช้ปัจจุบันที่ตรวจสอบสิทธิ์แล้ว
การเผยแพร่บล็อกโพสต์
คุณสามารถใช้ไลบรารีไคลเอ็นต์ PHP เพื่อเผยแพร่รายการใหม่ในบล็อก
ขั้นแรก ให้สร้างอินสแตนซ์รายการเพื่อแสดงถึงบล็อกโพสต์ จากนั้นคุณจะตั้งชื่อ เนื้อหา และแอตทริบิวต์อื่นๆ ของบล็อกโพสต์ได้ สุดท้าย เรียกใช้เมธอด insertEntry
เพื่อแทรกโพสต์ คุณดูการสร้างอินสแตนซ์จากโรงงานเวทมนตร์ในที่ทำงานได้ที่นี่พร้อมกับออบเจ็กต์ Zend_Gdata_Entry
,
Zend_Gdata_App_Extension_Title
และ Zend_Gdata_App_Extension_Content
ใหม่
function createPublishedPost($title='Hello, world!', $content='I am blogging on the internet.') { $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default'; $entry = $gdClient->newEntry(); $entry->title = $gdClient->newTitle($title); $entry->content = $gdClient->newContent($content); $entry->content->setType('text'); $createdPost = $gdClient->insertEntry($entry, $uri); $idText = split('-', $createdPost->id->text); $newPostID = $idText[2]; return $newPostID; }
การสร้างบล็อกโพสต์ฉบับร่าง
โพสต์ฉบับร่างจะสร้างขึ้นในลักษณะเดียวกันกับโพสต์สาธารณะ แต่คุณจะต้องตั้งค่าแอตทริบิวต์ฉบับร่างของออบเจ็กต์รายการ คุณสร้างบล็อกโพสต์เหมือนกับที่โพสต์ด้านบนเป็นฉบับร่างได้โดยการเพิ่มเส้นที่ไฮไลต์ดังนี้
function createDraftPost($title='Salutations, world!', $content='Hmm ... not quite right, must rework the title later.') { $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default'; $entry = $gdClient->newEntry(); $entry->title = $gdClient->newTitle(trim($title)); $entry->content = $gdClient->newContent($content); $entry->content->setType('text'); $control = $gdClient->newControl(); $draft = $gdClient->newDraft('yes'); $control->setDraft($draft); $entry->control = $control; $createdPost = $gdClient->insertEntry($entry, $uri); $idText = split('-', $createdPost->id->text); return $idText[2]; }
เช่นเดียวกับการตั้งชื่อหรือเนื้อหาของโพสต์ คุณจะสร้างออบเจ็กต์ Zend_Gdata_App_Extension_Control
และ Zend_Gdata_App_Extension_Draft
ใหม่และกำหนดวัตถุเหล่านั้นให้กับแอตทริบิวต์ Control ของรายการ
คุณสามารถเปลี่ยนบล็อกโพสต์ฉบับร่างที่มีอยู่แล้วเป็นโพสต์ที่เผยแพร่แล้วได้โดยการเรียกข้อมูลโพสต์ฉบับร่าง แล้วตั้งค่าแอตทริบิวต์ข้อความร่างเป็น no
จากนั้นอัปเดตโพสต์นั้น เราจะพูดถึงการเรียกและอัปเดตโพสต์ใน 2 ส่วนถัดไป
กำลังเรียกโพสต์
ส่วนต่อไปนี้อธิบายวิธีเรียกข้อมูลรายการบล็อกโพสต์ โดยใช้และไม่มีพารามิเตอร์การค้นหา
คุณสามารถค้นหาฟีดสาธารณะของ Blogger โดยไม่ต้องมีการตรวจสอบสิทธิ์ คุณจึงไม่ต้องตั้งค่าข้อมูลเข้าสู่ระบบหรือตรวจสอบสิทธิ์ AuthSub ก่อนเรียกข้อมูลโพสต์จากบล็อกสาธารณะ
กำลังเรียกดูบล็อกโพสต์ทั้งหมด
หากต้องการเรียกโพสต์ของผู้ใช้ ให้เรียกใช้เมธอด getFeed
เดียวกับที่ใช้เรียกฟีดเมตาของบล็อก แต่คราวนี้ให้ส่ง URL ฟีดของบล็อกโพสต์ดังนี้
function printAllPosts($gdClient, $blogID) { $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/posts/default'); $feed = $gdClient->getFeed($query); printFeed($feed); }
การดึงข้อมูลโพสต์โดยใช้พารามิเตอร์การค้นหา
Blogger Data API ช่วยให้คุณขอชุดรายการที่ตรงกับเกณฑ์ที่ระบุ เช่น ขอบล็อกโพสต์ที่เผยแพร่หรืออัปเดตในช่วงวันที่ที่ระบุ ในการดำเนินการนี้ คุณต้องสร้างออบเจ็กต์การค้นหาและส่งไปยังเมธอด getFeed
เช่น หากต้องการส่งการค้นหาช่วงวันที่ ให้ตั้งค่าพารามิเตอร์ published-min
และ published-max
ของออบเจ็กต์การค้นหา ข้อมูลโค้ดต่อไปนี้จะพิมพ์ชื่อและเนื้อหาของแต่ละบล็อกโพสต์ที่เผยแพร่ระหว่างเวลาเริ่มต้นและเวลาสิ้นสุดที่ระบุ
function printPostsInDateRange($gdClient, $blogID, $startDate='2007-04-01', $endDate='2007-04-25') { $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/posts/default'); $query->setParam('published-min', $startDate); $query->setParam('published-max', $endDate); $feed = $gdClient->getFeed($query); printFeed($feed); }
วิธีแก้ไขข้อบกพร่องที่มีประโยชน์สำหรับคลาส Zend_Gdata_Query
คือ getQueryUrl()
ซึ่งจะแสดง URL ที่เข้ารหัสซึ่งสร้างขึ้น
หมายเหตุ: ขณะนี้ยังไม่มีการตั้งค่า Magic set สำหรับพารามิเตอร์การค้นหา published-min
และ published-max
อย่างไรก็ตาม คุณจะใช้ setStartIndex
และ setMaxResults
ได้
API ข้อมูลของ Blogger สนับสนุนพารามิเตอร์การค้นหาต่อไปนี้
- หมวดหมู่
- ระบุหมวดหมู่ (หรือที่เรียกว่าป้ายกำกับ) เพื่อกรองผลลัพธ์ของฟีด ตัวอย่างเช่น
http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie
จะแสดงรายการที่มีทั้งป้ายกำกับFritz
และLaurie
- max-results
- จำนวนรายการสูงสุดที่จะแสดง
- ขั้นต่ำที่เผยแพร่, สูงสุดที่เผยแพร่
- ขอบเขตวันที่ที่เผยแพร่รายการ
- start-index
- ดัชนีแบบ 1 ของผลลัพธ์แรกที่จะดึงข้อมูล (สำหรับการแบ่งหน้า)
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์การค้นหาได้ในคู่มืออ้างอิง Blogger Data API และคู่มืออ้างอิงสำหรับ Google Data API
กำลังอัปเดตโพสต์
ในการอัปเดตบล็อกโพสต์ที่มีอยู่ ก่อนอื่นคุณต้องเรียกข้อมูลรายการที่จะอัปเดต จากนั้นแก้ไข จากนั้นส่งบทความไปยัง Blogger โดยใช้เมธอด save
ข้อมูลโค้ดต่อไปนี้จะแก้ไขชื่อและเนื้อหาของรายการบล็อก โดยสมมติว่าคุณเรียกข้อมูลจากเซิร์ฟเวอร์แล้ว
public function updatePost($postID, $updatedTitle='Hello, World?', $updatedContent='UPDATE: Still blogging', $isDraft=False) { $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/posts/default/' . $postID); $postToUpdate = $dClient->getEntry($query); $postToUpdate->title->text = $this->gdClient->newTitle($updatedTitle); $postToUpdate->content->text = $this->gdClient->newContent($updatedContent); if ($isDraft) { $draft = $gdClient->newDraft('yes'); } else { $draft = $gdClient->newDraft('no'); } $control = $gdClient->newControl(); $control->setDraft($draft); $postToUpdate->control = $control; $updatedPost = $postToUpdate->save(); return $updatedPost; }
หมายเหตุ: ขณะนี้ระบบยังไม่รองรับการแก้ไขข้อมูลผู้เขียนที่เชื่อมโยงกับโพสต์
กำลังลบโพสต์
หากต้องการลบโพสต์ ให้ส่ง URL การแก้ไขของโพสต์ไปยังเมธอด delete
ในออบเจ็กต์ $gdClient
ดังนี้
public function deletePost($gdClient, $blogID, $postID) { $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default/' . $postID; $gdClient->delete($uri); }
ความคิดเห็น
Blogger Data API ช่วยให้สร้าง เรียก และลบความคิดเห็นได้ ไม่รองรับการอัปเดตความคิดเห็น (และไม่พร้อมใช้งานในอินเทอร์เฟซบนเว็บ)
กำลังสร้างความคิดเห็น
ในการโพสต์ความคิดเห็น ให้สร้างออบเจ็กต์รายการและแทรกความคิดเห็นดังต่อไปนี้
function createComment($gdClient, $blogID, $postID, $commentText) { $uri = 'http://www.blogger.com/feeds/' . $blogID . '/' . $postID . '/comments/default'; $newComment = $gdClient->newEntry(); $newComment->content = $gdClient->newContent($commentText); $newComment->content->setType('text'); $createdComment = $gdClient->insertEntry($newComment, $uri); $editLink = split('/', $createdComment->getEditLink()->href); $newCommentID = $editLink[8]; return $newCommentID; }
หมายเหตุ: ขณะนี้ คุณสามารถโพสต์ความคิดเห็นไปที่บล็อกของผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์แล้วเท่านั้น
หมายเหตุ: ขณะนี้ระบบยังไม่รองรับการตั้งค่าผู้เขียนที่กำหนดเองสำหรับความคิดเห็น ความคิดเห็นใหม่ทั้งหมดจะปรากฏเหมือนกับว่าสร้างขึ้นโดยผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์ในปัจจุบัน
กำลังเรียกความคิดเห็น
คุณสามารถเรียกดูความคิดเห็นของโพสต์ใดโพสต์หนึ่งได้จาก URL ฟีดความคิดเห็นของโพสต์ โดยทำดังนี้
public function printPostComments($gdClient, $blogID, $postID) { $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/' . $postID . '/comments/default'); $feed = $gdClient->getFeed($query); $printFeed($feed); }
หรือคุณสามารถรับความคิดเห็นจากโพสต์ทั้งหมดโดยใช้ URL ฟีดความคิดเห็นของบล็อก ดังนี้
http://www.blogger.com/feeds/blogID/comments/default
กำลังลบความคิดเห็น
หากต้องการลบความคิดเห็น ให้ส่ง URL การแก้ไขของความคิดเห็นไปยังเมธอด delete
ในออบเจ็กต์ $gdClient
ดังนี้
public function deleteComment($gdClient, $blogID, $postID, $commentID) { $uri = 'http://www.blogger.com/feeds/' . $blogID . '/' . $postID . '/comments/default/' . $commentID; $gdClient->delete($uri); }