2008年05月05日

PHPでTwitterやnowaに投稿する

ちょっと書いてみたのでせっかくなので公開してみますね。最大の問題点はユーザ名とパスワードをどのように格納するかという話ですが、ここでは安直にファイルにそのまま書いています。少なくともこのファイル自身はApacheで見えないパスに格納して、別のPHPファイルから呼び出すなど、セキュリティには十分留意してください。

<?php

//PEAR:HTTP_Requestを必要とする
require_once "HTTP/Request.php";

/**
 * ユーザ名とパスワードの定義
 * 注意! このファイルはApacheから見えないパスに配置するなど、
 * セキュリティに十分留意してください
 * 別途DBに格納するなどの方法をお勧めします
 */
define('TWITTERUSER','hogehoge@hoge.local');
define('TWITTERPWD' ,'xxxxxxxx');
define('NOWAUSER','hogehoge');
define('NOWAPWD' ,'xxxxxxxx');


/**
 * Twitterに投稿する
 * @param $message メッセージ
 * @return 投稿結果(true or false)
 */
function sendToTwitter($message)
{
  return sendMessage($message, "http://twitter.com/statuses/update.xml", TWITTERUSER, TWITTERPWD);
}

/**
 * nowaに投稿する
 * @param $message メッセージ
 * @return 投稿結果(true or false)
 */
function sendToNowa($message)
{
  return sendMessage($message, "https://api.nowa.jp/status_message/update.json", NOWAUSER, NOWAPWD);
}

/**
 * Twitter互換API投稿メソッド
 * @param $message メッセージ
 * @param $url 投稿URL
 * @param $user ユーザID
 * @param $pwd パスワード
 * @return 投稿結果(true or false)
 */
function sendMessage($message, $url, $user, $pwd)
{
  // メッセージ検証
  if (!isset($message)) return false;
  $message = trim($message);
  if ($message == '') return false;

  // HTTP_Requestを組み立てる
  $req =& new HTTP_Request($url);
  $req->setBasicAuth($user, $pwd);
  $req->setMethod(HTTP_REQUEST_METHOD_POST);
  $message=mb_convert_encoding($message, 'UTF-8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS');
  $req->addPostData('status', $message);

  // HTTP_Request実行
  $response = $req->sendRequest();

  // 結果検証
  if (PEAR::isError($response)) {
    return false;
  } else {
    return true;
  }
}

/**
 * Twitterから最近のメッセージを取得する
 * @return [日時配列, メッセージ配列]の配列
 */
function getMyMessage()
{
  // HTTP_Requestを組み立てる
  $req =& new HTTP_Request("http://twitter.com/statuses/user_timeline.xml");
  $req->setBasicAuth(TWITTERUSER, TWITTERPWD);

  // HTTP_Request実行
  $response = $req->sendRequest();

  // 結果検証
  if (PEAR::isError($response)) {
    return false;
  } 

  // XMLから日時とメッセージを取得
  $xml = simplexml_load_string($req->getResponseBody());

  $dates = $xml->xpath('/statuses/status/created_at');
  $texts = $xml->xpath('/statuses/status/text');

  return array($dates, $texts);
}
?>

Hatena タグ: ,,
posted by えど at 21:08| Comment(0) | TrackBack(0) | PC・インターネット | このブログの読者になる | 更新情報をチェックする

MicrosoftのYahoo!買収撤回へ(確定)

ITpro記事より。前回ブログで話題にしたときは「関係筋」の話だったのですが、今回はMicrosoftによる正式発表ですね。これでMicrosoftのYahoo!買収は正式になくなったことになります。

買収額もさることながら、文化の異なる企業を買収することの難しさが如実に表れた感じですね。これでMicrosoftは「Live」戦略を自前で進めていくしかなくなったわけで。個人的にはLive HotmailやLive SkyDriveを快適に使っていたりするので、これはこれでMicrosoftにがんばってほしいです(この記事自体Live Writerで書いているわけですしw)。

一方のYahoo!。買収されずによかったよかった、とは必ずしもいかないでしょう。やはりネットサービス分野でGoogleとの競争は厳しいですし、今回買収に失敗した以上Microsoftは徹底的にYahoo!と敵対することになります。油断せず本業にまい進しなければなりません。

MicrosoftとYahoo!の両方に禍根を残した今回の騒動、この結果が正しかったかどうか、結果は2〜3年内に出ることでしょう。

Hatena タグ: ,
posted by えど at 08:36| Comment(0) | TrackBack(0) | PC・インターネット | このブログの読者になる | 更新情報をチェックする