TwitterApiComponentを作った
cakePHPで良い感じのTwitterコンポーネントが見つからなかったので自分で作ってみました。
[TwitterApiComponent][1]
OAuthに対応しており、かつTwitterに気軽にツイートとかできてしまいます。
ということで使い方を説明しておきます。
まず、今回必要なものは以下の通りです。
consumerKeyとconsumerSecret
OAuth consumer component
1.アプリ登録して、OAuth consumer componentを入手する
: consumerKeyとconsumerSecretはTwitterからアプリケーションを登録する際に入手できます。
OAuth consumer componentは下記のURLから取得してください。
※OAuth consumer classのダウンロードではなく、OAuth consumer componentほうだけダウンロード大丈夫です。</dd>
2.OAuth consumer compoonentをアプリケーションに設置する
: ダウンロード後解凍し、OAuthディレクトリを「app/vendors」に入れてください。
oauth_consumersフォルダと、oauth_consumer.phpを「app/controllers/conponents」に入れてください。</p>
次にapp/controllers/components/oauth_consumers」にtwitter_consumer.phpを作成してください。
```
3.TwitterApiComponentを設置
: tiwtter_api.phpを「app/controllers/components」に入れてください。
[email protected]:polidog/TwitterApiComponent.git
4.適当にコントローラを用意する
: 以下のように記載するだけでtwitterAPIが気軽に使えてしまいます。 ```
TwitterApi->autoStartAction['oauthStart'] = "/twitter/oauth"; //oauth認証を開始するためのアクションの指定
$this->TwitterApi->autoStartAction['oauthCallback'] = "/twitter/callback"; //oauth認証時のコールバックアクションを指定
$this->TwitterApi->redirectUrl['oauth_denied'] = "/"; //認証が拒否された場合のリダイレクトする先(nullだとリダイレクトしない)
$this->TwitterApi->redirectUrl['oauth_noauthorize'] = "/"; //認証に失敗した場合のリダイレクト先(nullだとリダイレクトしない)
$this->TwitterApi->redirectUrl['oauth_authorize'] = null; //認証成功の場合のリダイレクト先
}
function oauth() {
}
function callback() {
// 認証に成功したら、ユーザー情報を取得する
$data = $this->TwitterApi->apiAccountVerify_credentials();
var_dump($data);
exit("stop");
}
}
```
5.twitterAPIのコールメソッドについて
: TwitterAPIをコールする際のメソッドは以下のような命名規則になっています。
たとえばacount/verify_credentialsというapiをコールした場合は命名規則は以下のようなメソッド名になります。 ```
apiAcountVerity_credentials();
```
頭にapiという名前を付ける。
「/」の後に来る文字は大文字を指定する。
の2つになります。
また、以下のようにコールしてもapiをコールできます。
```
api('/acount/verify_credentials');
```
また、何かしらapiコール時にパラメータが必要な場合は以下のように指定します。
```
'value'));
```
というかたちで指定ができます。
例:twitterに投稿する
```
'ツイートのテスト!!','post');
```
※post形式の場合のapiは必ず2番名の引数にpostを指定してください。
6.apiコール時の戻り値について
: apiコールした際の戻り値は基本的に配列となっています。
また、デフォルトではjson形式で取得し、配列に変換してから返り値として返ってきます。
json形式で値を受け取りたい場合は以下のようにします ```
apiAccountVerify_credentials(array(),'get','json',false);
```
ちなみにxml形式での値を受け取ることもできます。
その場合は以下の通りです。
```
apiAccountVerify_credentials(array(),'get','xml',false);
```
まだまだ、バグとかあるかもしれないので、いろいろと試してみてもらえると助かります。
## 追記 2010/10/24
OAuth認証時のcallbackのURLの指定について
: Twitterにアプリケーション登録する際に、callbackのURLを指定するのですが、beforeFilter時にそのcallbackのURLを指定してください。
ちなみに、OAuth認証を行うアクションのみで、大丈夫です。
また、指定をしない場合は、デフォルトで$_SERVER['SEVER_NAME']と$this->autoStartAction['oauthCallback']のアクションの指定部分から自動的に設定されます。 ```
TwitterApi->autoStartAction['oauthStart'] = "/twitter/oauth"; //oauth認証を開始するためのアクションの指定
$this->TwitterApi->autoStartAction['oauthCallback'] = "/twitter/callback"; //oauth認証時のコールバックアクションを指定
$this->TwitterApi->redirectUrl['oauth_denied'] = "/"; //認証が拒否された場合のリダイレクトする先(nullだとリダイレクトしない)
$this->TwitterApi->redirectUrl['oauth_noauthorize'] = "/"; //認証に失敗した場合のリダイレクト先(nullだとリダイレクトしない)
$this->TwitterApi->redirectUrl['oauth_authorize'] = null; //認証成功の場合のリダイレクト先
$this->TwitterApi->oauthCallbackUrl = "http://twittertest.polidog.jp/twitter/callback";
}
function oauth() {
}
function callback() {
// 認証に成功したら、ユーザー情報を取得する
$data = $this->TwitterApi->apiAccountVerify_credentials();
var_dump($data);
exit("stop");
}
}
```
[1]: http://github.com/polidog/TwitterApiComponent
[2]: http://d.hatena.ne.jp/hagimi/20091123/p2