前回のエントリーで Eduwitter を作った際の反省点、理解が及んでなかった部分を踏まえ更新。
http://www13.atpages.jp/llan/tw/eduwitter/eduwitter_test.php
1. 設置
1.1 ダウンロードとアップロード
1.2 外部アプリを登録する
1.3 アクセストークンを取得
1.4 ツイートする最小限のコード
2. Eduwitter
2.1 Eduwitter のコンセプト
2.2 メンバメソッドの依存関係
3. 文献
4. 謝辞
1: 設置
1.1: ダウンロードとアップロード
Eduwitter をダウンロードします。
Eduwitter callback page から、zip または tar.gz のうち好きなアーカイブ形式を選んでください。
アーカイブの中には
eduwitter/eduwitter.php
eduwitter/eduwitter_test.php
eduwitter/twitter.com.crt
の三つが入っています。
これらをお使いのサーバへアップロードしてください。
外部アプリを登録します。
登録申請先: http://twitter.com/apps
コールバックURLは先ほどアップロードしたファイルのうち eduwitter_test.php を指定してください。
外部アプリのアクセスタイプは標準で「Read Only」ですが「Write & Read」にすると、ツイートすることも可能になります。
登録を終えると
Consumer key
Consumer secret
の二つを与えられます。
/*--------------------------------------------------------- Configure Section ---------------------------------------------------------*/ $consumer_key = '<Consumer key>'; $consumer_secret = '<Consumer secret>';
に先ほどの Consumer key と Consumer secret を入力し、再度アップロードします。
1.3: アクセストークンを取得するまで
この章での手順は
1. リクエストトークンを得る
2. 認証を済ませる
3. アクセストークンを得る
です。
アップロードした eduwitter_test.php にアクセスします。
「Eduwitter's requestToken Link.」をクリックします。
※注意 環境によってはリクエストトークンの取得に失敗します。 php-curl が サーバ証明書 を取得し損ねているようです。 念のためにサーバ証明書を同梱してあります。 eduwitter.php を開き該当部分をこのように変更すると解決するかもしれません。
static $ssl_cainfo = ''; // './twitter.com.crt'; // ↓ static $ssl_cainfo = './twitter.com.crt';2. 認証を済ませる
次に認証を行います。
「Eduwitter's Authentication Link.」をクリックします。
認証後は指定のコールバックURLのページに戻されます。
上手くいけば、ここで
oauth_token ( == access_token )
oauth_token_secret ( == access_token_secret )
が手に入ります。
リクエストトークンと区別するため、 access_token, access_token_secret と名付けておきます。
この二つを保管しておきます。
単純なツイートを行うサンプルプログラムです。
これを eduwitter.php と同じディレクトリへ置いてください。
<?php require_once 'eduwitter.php'; $consumer_key = '<Consumer key>'; // 外部アプリの Consumer key $consumer_secret = '<Consumer secret>'; // 外部アプリの Consumer secret $access_token = '<Access token>'; // 先ほど取得した access_token $access_token_secret = '<Access token secret>'; // 先ほど取得した access_token_secret /* Eduwitterの初期化 */ $eduwitter = new Eduwitter($consumer_key, $consumer_secret); $eduwitter->setAccessToken($access_token, $access_token_secret); /* API の接続に関する設定 */ $url = 'http://twitter.com/statuses/update.xml'; $method = 'POST'; $post = array( 'status' => '猫がぬころんだ' // ツイートする内容 ); /* API 叩いて結果を出力 */ $response = $eduwitter->requestOAuth($url, $method, $post); echo $response;
外部アプリの登録で「読み書き」に設定していれば書き込みが出来るはずです。
これをごにょごにょと改造すれば、ボットなども作れます。
Eduwitter のコードはこちら(github)。
2.1: Eduwitter のコンセプト
Eduwitter は単体のファイルで Twitter OAuth API を扱えるライブラリを目指して作成されました。
PEARライブラリを使う事なく、php5 と php5-curl で動きます。
割と質素なPHP環境でも動かせるでしょう。
主要なメンバメソッドと、その関数が呼び出すメンバメソッド。
処理の流れは下へ、インデントが呼び出すメンバメソッド
getReuestToken … リクエストトークンを取得する
├getParameter_RequestToken … request_token API に必要なパラメータを作成する
|├createParams … 基本的なパラメータを作成する
|├createSignature … signature を作成する
├eduwitteConnect … twitter.com の API に接続する
setRequestToken … request_token をセットする
├setOAuthToken … oauth_token をセットする
getAccessToken … アクセストークンを取得する
├getParameter_AccessToken … access_token API に必要なパラメータを作成する
|├createParams … 基本的なパラメータを作成する
|├createSignature … signature を作成する
├eduwitteConnect … twitter.com の API に接続する
setAccessToken … access_token をセットする
├setOAuthToken … oauth_token をセットする
requestOAuth … OAuthを使って API を叩く
├getParameter_OAuth … OAuth に必要なパラメータを作成する
|├createParams … 基本的なパラメータを作成する
|├createSignature … signature を作成する
├eduwitteConnect … twitter.com のAPI に接続する
参考ページ:
OAuth 公式リファレンス
http://oauth.net/core/1.0a/
OAuth 公式リファレンス日本語訳 (twitterで紹介していただいた)
http://openid-foundation-japan.github.com/draft-hammer-oauth-10.html
OAuth 公式リファレンスの手順 Image
http://oauth.net/core/diagram.png
OAuthの手順 Flash (kuraさんの放送でリスナーさんが貼ってくれたページ)
http://labs.unoh.net/2008/02/oauth.html
Twitter API 公式
http://apiwiki.twitter.com/
Twitter API の日本語訳
http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt
Python での実装、また苦戦した部分など
http://techno-st.net/2009/11/26/twitter-api-oauth-0.html
SDN Project - PHP & abraham's twitteroauth での導入方法
http://www.sdn-project.net/labo/oauth.html
abraham's twitteroauth
http://github.com/abraham/twitteroauth
Yahoo! OAuth
http://developer.yahoo.co.jp/other/oauth/
前回の Eduwitter のエントリー
http://www13.atpages.jp/~llan/wp/?p=730
最初に Twitter OAuth でのボット作成時にお世話になった SDN Project。
動くようになるまで abraham さんの twitteroauth で幾度となく挙動をチェックしました。
また kura さん、そして kura さんの放送リスナー、twitter 上で相談に乗っていただいた方々へ、ありがとうございました。
0 件のコメント:
コメントを投稿