ログインしろよと画面を表示してくる。
あれ、うっとうしい。
で、そのログイン情報を持ったまま、強いて言うならクッキーに登録したままページ遷移したい。
これはそのうちプラグイン化しようと思う。
とりあえず、流れだけ。
使用するプラグイン
http://code.42dh.com/oauth/
で、適当なコントローラーに
public function twitter() {
$consumer = $this->createConsumer();
$requestToken = $consumer->getRequestToken('https://api.twitter.com/oauth/request_token', 'ログイン後の戻り先絶対URL');
$this->Session->write('twitter_request_token', $requestToken);
if(!$this->Session->read('Twitter.accessToken.key')){
$this->redirect('https://api.twitter.com/oauth/authorize?oauth_token=' . $requestToken->key);
} else {
//直接書き込み画面へ
$this->redirect('あなたのURL/twitter_callback/1/');
}
$this->autoRender = false;
}
//$mode が 1ならすでにログイン済み
public function twitter_callback($mode = 0) {
$consumer = $this->createConsumer();
//postで書き込む場合
//$consumer->post($accessToken->key, $accessToken->secret, 'http://api.twitter.com/1/statuses/update.json', array('status' => 'hello world!'));
if($mode == 0){
echo '一度ログインモード';
$requestToken = $this->Session->read('twitter_request_token');
$accessToken = $consumer->getAccessToken('https://api.twitter.com/oauth/access_token', $requestToken);
$this->Session->write('Twitter.accessToken.key', $accessToken->key);
$this->Session->write('Twitter.accessToken.secret', $accessToken->secret);
} else {
echo 'セッション読み込みモード';
$accessToken->key = $this->Session->read('Twitter.accessToken.key');
$accessToken->secret = $this->Session->read('Twitter.accessToken.secret');
}
//ユーザーのタイムラインを取得
//$res = json_decode($consumer->get($accessToken->key, $accessToken->secret, 'http://api.twitter.com/1/statuses/user_timeline.json', array('count' => '10')));
//ユーザーのプロフィールを取得
$res = json_decode($consumer->get($accessToken->key, $accessToken->secret, 'http://api.twitter.com/account/verify_credentials.json'));
$this->autoRender = false;
}
こんな感じでセッションに登録したままにできる。
一度ツイッターで認証した auth 情報は そのまま使うことができるので
・セッションがなければツイッターへ飛べ
・セッションがあればそのまま処理を続行せよ
って感じで振り分けると良い。
ちなみにユーザーの写真は
http://eru-net.jp/web/?itemid=363
で取得すると良いかも。



