LaravelでTwitter OAuth認証してみた
だいぶ前ですが、LaravelでTwitter OAuth認証を実装してみました。
いくつか詰まったことがあったので、書き残しておこうと思います。
今回、LaravelのUser認証の仕組みと、TwitterOAuth認証パッケージを組み合わせて作っています。
ちなみに、この記事は詰まったことだけ書いてあるので実装の中身は書いてません。
実装の中身については、すでに参考になる記事を書かれている方がいるので、そちらを見たらあまり悩むことなくできるかと思います。
要するに丸投げです!
下記の記事など参考にさせていただきました!
blog.ISHINAO.net | Laravel 4でTwitterログイン機能を作ってみる
laravel-twitterの導入
TwitterOAuth認証の部分は、TwitterOAuth Service Provider for Laravel 4というパッケージを使っています。
OAuth認証以外のTwitterAPIの利用も、これを導入すればいけます。
導入に関して一点詰まったところ。注意。
Githubを見ると、composer.jsonに下記のように追記するように書かれています。
{ "require": { "laravel/framework": "4.0.*", "philo/laravel-twitter": "dev-master" }, "minimum-stability": "dev" }
しかし、このように記載すると、今回導入したいlaravel-twitter以外のものについても、開発版(dev)になってしまいます。
minimum-stabillityがdevになっているせいです。
基本的には安定版を使いたいですし、なんかイマイチなので、下記のように書き換えて導入しました。
{ "require": { "laravel/framework": "4.2.*", // Versionはそれぞれの環境による。 "tijsverkoyen/twitteroauth": "@dev", // laravel-twitterがtwitteroauthを利用するので、これも指定しないと怒られた。 "philo/laravel-twitter": "@dev" // @dev指定することで、開発版になる。 }, "minimum-stability": "stable" // ここはstableなので、@dev指定したパッケージ以外は全てstable(安定版)になる }
これで、composer update。
無事開発版にしたいところだけを開発版にすることができました。
composerってむずかしいね!
導入自体は他のパッケージと同じように。
GithubのREADME見ればすぐわかる。簡単!
Usersテーブルの作成
テーブル作成時の注意点。
デフォルトでは、'id'カラムが必須になっているようです。
これを作らないと怒られます。
ちなみに、主キーも'id'がデフォルトのようなので、'id'キーをどうしても作りたくない場合をのぞいて、'id'カラムは素直に用意したほうが楽ちんかもしれないですね。
TwitterからのCallBackを受ける
Twitter認証が必要なアプリを使ったことのある人はわかると思うのですが、認証の際に一旦Twitterの認証画面に遷移して、認証完了後に元のサイトに戻ってくるという流れになります。
この戻ってくるアドレスは、TwitterAppsのページで設定します。(Callback URLという設定項目があります)
が、localhostへCallBackさせることができません!
http://localhost:8000/のように書くと、その設定はできないぜと怒られます。
ビルトインサーバーで開発していると、localhostが標準なので、そのままではCallBackを受けれないことになります。
一瞬「こりゃ困ったぞ!!」と思いましたが、IPアドレスを割り当ててあげればいいだけでした。 例えば下記のようにします。
php artisan serve --host 127.0.0.1 --port 8000
これで、TwitterAppsのCallBackアドレスは、
http://127.0.0.1:8000/{アクセスさせたいところ}
とします。
これでlocal環境でもCallBackを受けれるようになりました。
まとめ
そんなこんなで、無事Twitter OAuth認証が導入できました。
自分が今まで使ってたものを自分で実装してみるのって、なんかワクワクしますよね。