Xrea + PHP + OAuth + twitter REST API で BOT の完全スクリプト

この記事は次のブログに引っ越しました。

ポイントは、twitterBOT用のアプリをtwitterデベロッパーサイトに登録後、右側に表示される"My Access Token"に記載されている、認証トークン(アクセス・トークン)を控えること。 必要なもの GitHubの”twitteroauth”をダウンロード・解凍して、"twitteroauth"フォルダにある"twitteroauth.php"と"OAuth.php"の2ファイル twitterのアカウント 自動ポスト(BOT)用アプリをtwitterに登録 認証トークンの取得 (アプリの登録画面で確認) Consumer keyの値 Consumer secretの値 アクセストークンの取得 (アプリ登録後、右側にある"My Access Token"に記載されている情報) Access Token (oauth_token)の値 Access Token Secret (oauth_token_secret)の値 Xreaで動くOAuthを使ったPHPスクリプトのサンプル ※文字コードUTF-8が無難です。 require_once("./twitteroauth.php"); require_once("./OAuth.php"); // Consumer keyの値 $sConsumer_key = "ここにコンシューマー・キー値"; // Consumer secretの値 $sConsumer_secret = "ここにコンシューマー・シークレットの値"; // Access Tokenの値 $sAccess_token = "ここにアクセス・トークンの値"; // Access Token Secretの値 $sAccess_token_secret = "ここにアクセス・トークン・シークレットの値"; // OAuthオブジェクト生成 $oTwitter = new TwitterOAuth($sConsumer_key,$sConsumer_secret,$sAccess_token,$sAccess_token_secret); // TwitterへPOST★ $sResultXML = $oTwitter->OAuthRequest(   "https://twitter.com/statuses/update.xml",   "POST",   array(     "status"=>"OAuth経由のポストテスト"   ) ); header("Content-Type: application/xml"); echo($sResultXML); 他のメソッドを使いたい場合 つぶやきをPOSTするだけでなく、タイムラインを取得したり、他の処理をしたい場合も簡単です。 上記スクリプトのPOSTしている行のメソッドの引数を変更するだけです。 $mResult = $oTwitter->OAuthRequest(   "ここにtwitterAPIのメソッドのURL",   "ここにPOSTかGET",   "ここにOPTIONを配列で" ); 例えば、「パブリックのタイムライン(フォロー関係なく、最新のつぶやき一覧)を取得したい」場合、まずはtwitterAPIリファレンスを見に行って、該当するメソッドを探します。この場合は、"Timeline Methods"にある"statuses/public_timeline"のメソッドが該当します。 次に、メソッドの仕様を見て、下記3点をチェックします。 メソッドのURL → Resource URL リクエストがGETなのかPOSTか → HTTP Methods オプションはどのようなものがあるか → Parameters オブジェクトに必要情報を埋めた(引数で渡した)のが、下記の行です。最上部のサンプルでPOSTしている行(★)と書き換えてみてください。 //JSON形式でパブリックのタイムラインを取得 $sResult = $oTwitter->OAuthRequest(   "https://twitter.com/statuses/public_timeline.json",   "GET",   array() ); 仕様の各項目については下記の通り。 twitterAPIメソッドの仕様の簡易説明 適当なメソッドの仕様を開きながらチェックしてみて下さい。 ■Resource URL twitterAPIのメソッドにアクセスするためのリクエスト先のURLのフォーマットです。 //基本フォーマット http://api.twitter.com/version/statuses/public_timeline.format 特に特定のバージョンの指定がなければ、"version"は省略できます。ポイントは、末尾の"format"です。ここでレスポンスのフォーマット(結果表示の書式)を指定します。 例えばJSON形式で結果が欲しい場合は"json"にします。 例)atom形式でパブリックのタイムラインを取得するためのメソッドのURL https://twitter.com/statuses/public_timeline.atom 対応するフォーマットは、メソッドによって異なりますが、仕様書右側にある"Resource Information"欄で、対応フォーマットが確認できます。 Resource Informationの内容 ■Rate Limited? 制限があるかないかです。TRUEの場合、下記条件が適用されます。 認証なしの場合:同一IPからのリクエストが1時間に150リクエストまで。 認証ありの場合:一時間に350リクエストまで可能。 ※制限の詳細 ■Requires Authentication? リクエスト時にOAuth認証済みの必要があるか、ないかです。TRUEの場合は必要です。 ■Response Formats リクエストした結果を受け取る際の指定できるフォーマットです。json, xml, rss, atom などがあります。 ※リクエストURLの末尾の値です。 ■HTTP Methods リクエスト形式です。POSTもしくはGETがあります。 その他 ■Parameters このメソッドのパラメーター(オプションの種類)です。 Requiredは必須オプション、Optionalは任意オプションです。 オブジェクトの第三引数(オプション)で配列で渡す場合のキー名となります。 参考URL(必読) PHP+OAuthでTwitter – SDN Project PHPとOAuthを使ってTwitterで遊ぶ 所感 PEARのServices_Twitter、Net_URL2 + HTTP_Request2 + HTTP_OAuth など、色々検討しましたが、Xreaだったらこれが楽かな。