参考サイト
- [ Laravel ]facebook Loginを実装する ←とても参考になりました。
- laravel/socialite
概要
お手伝いしているサイトで、Facebookログインの機能を追加したいという話があり、ちょうどサイトをLaravelに置き換えていたので、Laravelでいいツールないかなと、例のごとくPackagistをあさっていたところ、 laravel/socialite
というツールが良さそうだったので、コチラを使ってFacebookLoginを実装してみようと思います。
環境
- Laravel 5.5
- PHP 7.1
- Sociallite 3.0.9
インストール
$ composer require laravel/socialite
Laravel側もろもろ設定
1. config/app.php
を修正
'providers' => [ /* * Package Service Providers... */ Laravel\Socialite\SocialiteServiceProvider::class, ], 'aliases` => [ // 最後に追記 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ]
2. .env
を修正
FACEBOOK_APP_ID=****************** FACEBOOK_APP_SECRET=****************** FACEBOOK_CALLBACK_URL=******************
3. config/services.php
を修正
// 最後に追記 'facebook' => [ 'client_id' => env('FACEBOOK_APP_ID'), 'client_secret' => env('FACEBOOK_APP_SECRET'), 'redirect' => env('FACEBOOK_CALLBACK_URL') ]
4. routes/web.php
を修正
Route::get('/auth/signin', 'Auth\SocialLiteController@signin'); Route::get('/auth/login', 'Auth\SocialLiteController@login'); Route::get('/auth/callback', 'Auth\SocialLiteController@callback');
5. app/Http/Controllers/SocialLiteController.php
を作成
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Socialite; class SocialLiteController extends Controller { public function signin() { return view('auth/signin'); } public function login() { return Socialite::driver('facebook')->redirect(); } public function callback() { $user = Socialite::driver('facebook')->user(); dd($user); } }
6. resources/views/auth/signin.blade.php
を作成
<html> <body> <a href="/auth/login">facebook login</a> </body> </html>
Facebook側もろもろ設定
↑の画面で、APP IDとAPP SECRETを確認して、.envの FACEBOOK_APP_ID
と FACEBOOK_APP_SECRET
に書き写す
↑の画面で、.envで設定しているFACEBOOK_CALLBACK_URL
を設定する
実行してみる。
facebook login
リンクをクリックすると以下のような画面に行くと思います。
ログインを実行すると、設定したコールバック先に通信が来ます。
現状だと以下のような dd()
で表示しているデータが表示されます。
感想
コード量も少なくあっという間に出来ました。
Laravelは本当にいろんなライブラリでてて楽です。
他にも良さそうなのあったら随時記事あげていこうと思います。