14.5. Google Blogger の使用法

ウェブログのホスティングサービスである Blogger.com は、 Google Data API に参加しています。 PHP アプリケーションで Zend_Gdata_Blogger を使用すると、 既存のブログに対する問い合わせができます。 また、認証済みのアクセスを確立したうえで新しいエントリを投稿することもできます。

Google Blogger API についての詳細な情報は http://code.google.com/apis/blogger/overview.html を参照ください。

14.5.1. Blogger のバージョン間の互換性について理解する

Google Data API を使用して現在のバージョンの Blogger にアクセスする際とベータ版の Blogger にアクセスする際には、いくつかの違いがあります。 最大の違いは認証に関する点です。以下の表を参照ください。

表 14.1. 現在の Blogger サービスとベータ版の Blogger サービスの違い

項目 現在の Blogger サービス ベータ版の Blogger サービス
Google Data API のサポート Yes Yes
認証元 Blogger.com のアカウント Google.com のアカウント
ClientLogin 認証のサポート Yes Yes
HTTP ベーシック認証のサポート Yes No
AuthSub 認証のサポート No Yes
認証前のフィードのフォーマット Atom 0.3 Atom 1.0
認証後のフィードのフォーマット Atom 1.0 Atom 1.0
エントリの投稿の際のフォーマット Atom 1.0 Atom 1.0
クエリパラメータのサポート No Yes

14.5.2. blog の検索

setBlogName() メソッドで blog の名前を指定します。 これは blogspot URL に http://blogname.blogspot.com のようにあらわれる名前となります。 あるいは、フィードを要求する際に blog の名前を指定することもできます。

<?php
$gdataBlog = new Zend_Gdata_Blogger();

// blog のフィードを取得する方法...
$feed = $gdataBlog->getBloggerFeed('blogname');

// blog のフィードを取得する別の方法...
$gdataBlog->setBlogName('blogname');
$feed = $gdataBlog->getBloggerFeed();
?>

このオブジェクトの使用法についての詳細は、 Zend_Feed のドキュメントを参照ください。

setPublishedMin() メソッドおよび setPublishedMax() メソッドで、エントリの日付の範囲を指定します。 publishedMin を指定すると、 それより前に公開されたエントリはフィードに含まれません。 同様に、publishedMax で指定した日付より後で公開されたエントリもフィードに含まれません。

フィード内のエントリは、<updated> 要素の順で並べ替えられ、一番新しいエントリがフィードの先頭にくるようになります。

[注意] カテゴリ検索や全文検索はサポートしません

Google Blogger API は、現在は カテゴリ、キーワードあるいはタグによる検索をサポートしていません。 setCategory() を使用して検索しようとすると、 Zend_Gdata_Blogger は例外をスローします。

Google Blogger API は、現在は全文検索をサポートしていません。 setQuery() を使用して検索しようとすると、 Zend_Gdata_Blogger は例外をスローします。

14.5.3. 自分の blog への投稿

post() メソッドを使用して、 エントリを自分の blog に投稿することができます。 そのためには、認証済みの Zend_Http_Client を使用する必要があります。 これは Zend_Gdata_AuthSub クラスあるいは Zend_Gdata_ClientLogin クラスを使用して作成します。

<?php
$gdataBlog = new Zend_Gdata_Blogger($authenticatedHttpClient);
$gdataBlog->setBlogName('myblog');

$xmlString = <<<XML
<entry xmlns='http://www.w3.org/2005/Atom'>
  <title type='text'>Marriage!</title>
  <content type='xhtml'>
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p>Mr. Darcy has <em>proposed marriage</em> to me!</p>
      <p>He is the last man on earth I would ever desire to marry.</p>
      <p>Whatever shall I do?</p>
    </div>
  </content>
  <author>
    <name>Elizabeth Bennet</name>
    <email>liz@gmail.com</email>
  </author>
</entry>
XML;

$xml = new SimpleXMLElement($xmlString);

$response = $gdataBlog->post($xml->asXML());
?>

現在の認証済みアカウントの blog のフィードを取得するには getBloggerListFeed() メソッドを使用します。

<?php
$gdataBlog = new Zend_Gdata_Blogger($authenticatedHttpClient);
$myBlogs = $gdataBlog->getBloggerListFeed();
?>