FuelPHP で Twitter OAuth を使用する

スポンサーリンク

日本ユーザ会も結成され (?) ますます加熱する FuelPHP。今回は、fuel-packages (Fuel user contributed packages) の fuel-twitter を使用して、Twitter OAuth と連携する方法についてまとめておく。

PHP カンファレンス 2012 で登壇する @mukaken さん

PHP カンファレンス 2012 で登壇する @mukaken さん


スポンサーリンク

新規アプリケーションの作成

まずは FuelPHP で新しいアプリケーションを作成する。名前はなんでもいいが、今回は “twit” にした。 (oil はインストール済みという前提)

$ cd htdocs/
$ oil create twit
$ cd twit/

git で新しい branch を作り、切り替える。これも名前はなんでもいい。

$ git branch twit
$ git checkout twit

(ちなみに “git checkout -b twit” とやれば一発でできる)

branch が 1.3/master から twit に切り替わった。

$ git branch -a
  1.3/master
* twit
  remotes/origin/1.0/master
  remotes/origin/1.1/master
  remotes/origin/1.2/develop
    :

不要なものは消しておく。

$ rm -rf *.md build.xml docs/

変更を commit する。

$ git commit -a -m "Delete unused files"
[twit df59c46] Delete unused files
 6 files changed, 0 insertions(+), 825 deletions(-)
 delete mode 100644 CHANGELOG.md
 delete mode 100644 CONTRIBUTING.md
 delete mode 100644 README.md
 delete mode 100644 TESTING.md
 delete mode 100755 build.xml
 delete mode 160000 docs

fuel-twitter の配置

ここからが本題。

github から fuel-twitter を取ってきて配置する。README によると、次の3つのインストール方法があるようだ。

  • Git Submodule を使う方法
  • zip を DL して配置する方法
  • oil を使う方法

今回は、推奨されている “Git Submodule を使う方法” でやってみる。

$ git submodule add git://github.com/dhorrigan/fuel-twitter.git fuel/packages/twitter/
$ git submodule update --init fuel/packages/twitter/

パッケージとして fuel-twitter が配置された。

$ ls -Rp fuel/packages/twitter/
fuel/packages/twitter/:
LICENSE  README.md  bootstrap.php  classes/  config/

fuel/packages/twitter/classes:
twitter/  twitter.php

fuel/packages/twitter/classes/twitter:
connection.php  oauth/  oauth.php

fuel/packages/twitter/classes/twitter/oauth:
response.php

fuel/packages/twitter/config:
twitter.php

設定ファイルをアプリケーションの config ディレクトリにコピーする。

$ cp fuel/packages/twitter/config/twitter.php fuel/app/config/

commit しておく。

$ git add *
$ git commit -a -m "Install fuel-twitter"

config ファイルには key や secret を書くので、リポジトリに上げたくない場合は git の管理から外しておく (ただしリポジトリから消えてしまう)。

$ vi .gitignore
/fuel/app/config/twitter.php  # これを末尾に追記
$ git commit .gitignore -m "Update .gitignore"
$ git rm --cached fuel/app/config/twitter.php
$ git commit -m "Delete ignored file"

fuel-twitter の使用

ここからは、実際に fuel-twitter で OAuth を利用するためのコードを書いていく。

まず、fuel-twitter パッケージを常にロードするために、”fuel/app/config/config.php” の always_load に追記する。

$ vi fuel/app/config/config.php
  :
'always_load'  => array(
      :
    'packages'  => array(
        'twitter',  // これを追加
    ),
      :

commit する。

$ git commit -a -m "Switch to enable fuel-twitter"

Twitter DeveloperMy applications でアプリケーションを登録し、”Consumer key” と “Consumer secret” を取得する。

今回はとりあえずローカル環境でテストしているので、”Website:” は “http://127.0.0.1:8888/twit/public/” と入力しておいた (localhost だと蹴られた)。

Create an application

Create an application

取得した key と secret を設定する。

$ vi vi fuel/app/config/twitter.php
      :
    'development' => array(
        'twitter_consumer_key'     => '*********************',
        'twitter_consumer_secret'  => '******************************************',
    ),
      :

Twitter OAuth を使いたいページ (例: welcome/index) の Controller に、次のようなコードを追加する。

$ vi fuel/app/classes/controller/welcome.php
class Controller_Welcome extends Controller
{

    public function action_index()
    {
        // ↓この辺を追加
        if (!Twitter::logged_in())                  // ログイン済みか検証
        {
            Twitter::set_callback(Uri::current());  // 戻り先 URL
            Twitter::login();                       // Twitter のログイン画面へ遷移
        }

        return Response::forge(View::forge('welcome/index'));
    }
      :

ブラウザで Controller にアクセスしてみる

http://127.0.0.1:8888/twit/public/

すると、Twitter のログイン画面 (ログイン済みの場合はアクセス許可画面) に遷移する。ログインすれば、元の welcome/index の内容が表示される。

Twitter のログイン画面

Twitter のログイン画面

認証に成功したので、今度はユーザ名を取得するコードを Controller に追加してみる。

$ vi fuel/app/views/welcome/index.php
$twitter_user = Twitter::get('account/verify_credentials');
$data = array(
    'screen_name' => $twitter_user->screen_name
);

//return Response::forge(View::forge('welcome/index'));
return Response::forge(View::forge('welcome/index', $data));

なお、この他の API については、REST API v1.1 Resources に書かれている。

View で表示する。

$ vi fuel/app/views/welcome/index.php
<!--<h1>Welcome!</h1>-->
<h1>Welcome, <?php echo $screen_name; ?>!</h1>

screen_name が表示される。

screen_name が表示される

screen_name が表示される

以上により、FuelPHP + fuel-twitter で、Twitter OAuth と連携したアプリを開発する準備が整った。また今度、実際にアプリケーションの開発について書きたい。

コメント

タイトルとURLをコピーしました