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

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 Framework คุณอาจต้องตั้งค่า 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');

การใช้เมธอดรับและเมธอดตั้งค่าแบบมายากล

เราได้เพิ่มการรองรับตัวตั้งค่า/ตัวรับค่าแบบไม่ระบุชื่อในไลบรารีไคลเอ็นต์ PHP เพื่ออำนวยความสะดวกให้แก่นักพัฒนาซอฟต์แวร์ ซึ่งช่วยให้เข้าถึงพร็อพเพอร์ตี้ของคลาสได้อย่างปลอดภัยโดยใช้เมธอด setter/getter แบบดั้งเดิม หรือโดยการเข้าถึงพร็อพเพอร์ตี้ ตัวอย่างเช่น หาก $gdataObject เป็นอินสแตนซ์ของออบเจ็กต์ในไลบรารีนี้ โค้ด 2 บรรทัดต่อไปนี้ก็จะมีผลเหมือนกัน

$gdataObject->setFoo("bar");
$gdataObject->foo = "bar";

ในทํานองเดียวกัน โค้ด 2 บรรทัดนี้ก็มีผลเหมือนกัน

$baz = $gdataObject->getFoo();
$baz = $gdataObject->foo;

ในทำนองเดียวกัน เมธอด Magic Factory ช่วยให้ประกาศออบเจ็กต์ใหม่ได้ง่ายขึ้น คุณสามารถสร้าง object ใหม่ได้โดยเรียกใช้ newObject(); ในไคลเอ็นต์บริการ Zend แทนที่จะต้องจำชื่อคลาสยาวๆ ตามแบบแผนการตั้งชื่อของ 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)

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

คุณเข้าถึงทั้งฟีดสาธารณะและฟีดส่วนตัวได้โดยใช้ Blogger Data API ฟีดสาธารณะไม่จําเป็นต้องตรวจสอบสิทธิ์ แต่จะเป็นฟีดแบบอ่านอย่างเดียว หากต้องการแก้ไขบล็อก ลูกค้าจะต้องตรวจสอบสิทธิ์ก่อนขอฟีดส่วนตัว โดยสามารถตรวจสอบสิทธิ์ได้โดยใช้แนวทางใดแนวทางหนึ่งต่อไปนี้ การตรวจสอบสิทธิ์ 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 Page โค้ดด้านล่างจะดึงข้อมูล 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พารามิเตอร์การค้นหาของ URL AuthSubRequest ระบบ 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 มีฟีดที่แสดงรายการบล็อกของผู้ใช้รายหนึ่งๆ ซึ่งฟีดดังกล่าวเรียกว่า "ฟีดเมตา"

ตัวอย่างโค้ดต่อไปนี้ใช้ออบเจ็กต์ $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 ใหม่และกำหนดให้กับแอตทริบิวต์การควบคุมของรายการในลักษณะเดียวกับการตั้งชื่อหรือเนื้อหาของโพสต์

คุณเปลี่ยนบล็อกโพสต์ฉบับร่างที่มีอยู่ให้เป็นโพสต์ที่เผยแพร่ได้โดยเรียกข้อมูลโพสต์ฉบับร่าง ตั้งค่าแอตทริบิวต์ฉบับร่างเป็น no แล้วอัปเดตโพสต์ เราจะพูดถึงการดึงข้อมูลและการอัปเดตโพสต์ในส่วนถัดไป

กำลังเรียกข้อมูลโพสต์

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

คุณค้นหาฟีดสาธารณะของ 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 ที่เข้ารหัสซึ่งสร้างขึ้น

หมายเหตุ: ปัจจุบันยังไม่มีตัวตั้งค่าแบบมายากลสําหรับพารามิเตอร์การค้นหา published-min และ published-max แต่คุณใช้ setStartIndex และ setMaxResults ได้

Blogger Data API รองรับพารามิเตอร์การค้นหาต่อไปนี้

หมวดหมู่
ระบุหมวดหมู่ (หรือที่เรียกว่าป้ายกำกับ) เพื่อกรองผลการค้นหาของฟีด เช่น http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie จะแสดงรายการที่มีทั้งป้ายกํากับ Fritz และ Laurie
max-results
จำนวนรายการสูงสุดที่จะแสดง
published-min, published-max
ขอบเขตวันที่เผยแพร่รายการ
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);
}

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