cakephp2.x twitter oauth component 使い方

2014年1月7日更新 view: 19 view
photoBy: http://vesalia08.de/wp-content/uploads/2013/03/tw…

Consuming OAuth-enabled APIs with CakePHP を使う

http://www.matomater.com/686/

もあるが、うまく動かないので新たに書いてみます。

今回の条件

http://code.42dh.com/oauth/

にある、コンポーネントを使う。

上記マニュアルには、OAuth consumer classとOAuth consumer componentがあるが、
OAuth consumer component 以下のみ読むようにすること。上下は別物なので。

ファイルのダウンロードと設置

/app/Plugin/OAuth/Controller/Component/ 以下に

/OAuthConsumerComponent.php
/OAuthConsumers/AbstractConsumer.php

を設置。さらに、

/OAuthConsumers/TwitterConsumer.php を作成する。

スポンサードリンク
<?php
class TwitterConsumer extends AbstractConsumer {
    public function __construct() {
        parent::__construct('yourapianm9Q', 'yourapisecretY0Cyga9FKUTFhEg');
    }
}

ここまでで使う準備完了!

今回の目的

ユーザーをログイン画面に誘導し、ログイン後に自動でつぶやかせる

/tweets/index/ にアクセスされたら twitterのログイン画面へ。
ログインが完了したら /tweets/callback/ へ移動し、自動でつぶやく。

https://dev.twitter.com/

で twitterdeverp アカウントなど 色々設定できます。

https://dev.twitter.com/ で必ず callbackurl も指定すること。

・TweetsController.php

<?php

class TweetsController extends AppController {
    
    var $components = array(
        'OAuth.OAuthConsumer',
        'Session'
    );
    
    public function index() {
        
        $requestToken = $this->OAuthConsumer->getRequestToken('Twitter', 'https://api.twitter.com/oauth/request_token', 'http://' . $_SERVER['HTTP_HOST'] . '/tweets/callback/');//callback url

        if ($requestToken) {
            $this->Session->write('twitter_request_token', $requestToken);
            $this->redirect('https://api.twitter.com/oauth/authorize?oauth_token=' . $requestToken->key);
        }
        
        $this->autoRender = false;
    }

    public function callback() {
        
        $requestToken = $this->Session->read('twitter_request_token');
        
        $accessToken = $this->OAuthConsumer->getAccessToken('Twitter', 'https://api.twitter.com/oauth/access_token', $requestToken);

        if ($accessToken) {
            $this->OAuthConsumer->post('Twitter', $accessToken->key, $accessToken->secret, 'https://api.twitter.com/1.1/statuses/update.json', array('status' => 'あけましておめでとうございます'));
            pr($this->OAuthConsumer);//バグってたらここの文字を読んでみる。
        }
        
        $this->autoRender = false;
        
    }

}


?>

おまけ (画像添付付きでツイートしたい)

$res = $this->OAuthConsumer->postMultipartFormData('Twitter', $key, $secret, 'https://api.twitter.com/1.1/statuses/update_with_media.json',array('media[]' => WWW_ROOT.'media/transfer/img/11600.jpg'), array('status' => '昔からあるよね'));

twitter api は 1 と 1.1 があり、ネット上に情報が混在しているので要注意。
上記は twitterapi 1.1 のつぶやきなので、動きます。

スポンサードリンク

関連記事

関連カテゴリ

コロ助

web関連の記事や制作系の記事をどんどんまとめていきます。 宜しくお願いします!

ピックアップ

パソコン・ソフトウェア ランキング

9月18日 ( 火 ) にアクセスが多かった記事はこちら!