Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

日記投稿APIを追加したServices_MixiAPI 0.2.0リリース

via. http://ido.nu/kuma/2008/07/30/digging-mixi-for-iphone-application-and-new-api-for-posting-a-diary-with-a-photo/, mixi日記投稿用APIを使ってPHPからmixi日記にポスト | Creazy!

個人的には完全に出遅れた感が。。。
http://ido.nu/kuma/2008/07/30/digging-mixi-for-iphone-application-and-new-api-for-posting-a-diary-with-a-photo/によると、どうもmixiAPIに日記投稿APIが追加されていたらしく、元後輩がmixi日記投稿用APIを使ってPHPからmixi日記にポスト | Creazy!PHPのサンプルコードを公開してます。

で、


PEAR化についてはshimookaさんあたりがServices_MixiAPIに追加とかしてくれると(勝手に)思い込んでいるので期待して待つ事にします。

これは「とっとと作れや」ということですか?そうですか。
ということで、以前から公開しているServices_MixiAPIに無理矢理突っ込んでみました。

インストール・アップグレードは

$ sudo pear install -af http://www.doyouphp.jp/pear/Services_MixiAPI-0.2.0.tgz
$ sudo pear upgrade -af http://www.doyouphp.jp/pear/Services_MixiAPI-0.2.0.tgz

な感じで。
使い方はざっと次のとおりです。

<?php
require_once 'Services/MixiAPI/Diary.php';
require_once 'Services/MixiAPI/Image.php';
require_once 'Services/MixiAPI/Factory.php';

error_reporting(E_ALL);

/**
 * $user,$pass,$idを適宜書き換えてください
 */
$user = '[mixiのログインID]';
$pass = '[mixiのパスワード]';
$id = '[mixiのユーザーID]';

/**
 * 日記オブジェクトの作成
 */
$title = 'Services_MixiAPIを使った投稿テスト';
$subject = <<< EOD
mixiも裏で色々と用意しているみたいですね。

「あしあと」がatom+WSSE認証で配信されているようなので、試]]>してみました。WSSE認証については以下を参照ということで。

    * Web Services Security UsernameToken Profile 1.0(pdf)
    * はてなブックマークAtomAPIだのWSSEだの
    * はてなフォトライフatomapiとは - はてなダイアリー

以下サンプルですが、X-WSSEリクエストヘッダの内容を作っている部分は、PEAR::Services_HatenaとServices_Hatena - PHPの挑戦 (ハズレ日記)を参考にさせてもらいました。

つーか、ほとんどそのままですね ;-)
EOD;
$diary = new Services_MixiAPI_Diary($title, $subject);

/**
 * mixiはjpegのみ対応なので注意
 */
$diary->setImage(new Services_MixiAPI_Image('/path/to/jpeg_file.jpg'));

/**
 * 日記投稿APIオブジェクトの作成
 */
$service = Services_MixiAPI_Factory::getInstance(
               Services_MixiAPI_Factory::API_MODE_POSTDIARY,
               $user, $pass, $id);

/**
 * 日記オブジェクトをセット
 */
$service->setDiary($diary);

/**
 * リクエスト送信
 */
$service->execute();

/**
 * 結果のXML
 */
var_dump($service->get());

Services_MixiAPI_DiaryオブジェクトにServices_MixiAPI_Imageオブジェクトを突っ込んでおくと、画像付きの日記を投稿できます。この辺の話はmixi日記投稿用APIを使ってPHPからmixi日記にポスト | Creazy!を参照してください。Services_MixiAPI_Imageオブジェクトがない場合は、写真なしの日記になります。

コードですが、いつも通りCodeReposに上げてあります。

Services_MixiAPI 0.1.x系とAPI(interface的な意味)がかなり違っていたのですが、とりあえずServices_MixiAPIクラスに__callメソッドを追加することで逃げています。。。そもそもAPIが違うのでこんな感じになってますが。。。あー、この辺をどうにかしたい!
あと、コメントが結構適当ですw