前回のエントリーで 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 件のコメント:
コメントを投稿