【Laravel5.4】SNS(Facebook)ログインを実装する方法【Socialite】
Socialiteというパッケージを利用して、Laravel5.4でFacebookログインを実装する方法。SocialiteはLaravelの公式プラグインなので安心して利用できます。また、Facebook以外にも様々なSNS(Twitter/Google/Github)に対応しています。
» GitHub – laravel/socialite
開発の環境情報
Laravelのバージョン:5.4.23
MAMPで構築
PHPのバージョン:7.1.1
MYSQLのバージョン:5.6.35
MAMPで構築
PHPのバージョン:7.1.1
MYSQLのバージョン:5.6.35
下記コマンドでLaravelのバージョンを確認できます。
$php artisan –version
Laravel Framework 5.4.23
Laravel Framework 5.4.23
尚、簡易的なセットアップ解説のため。データベースは準備しません。SNSログインしたユーザー情報をデバッグすると、取得した情報を表示するまでを解説します。
まずはLaravelをインストールする
$ composer create-project –prefer-dist laravel/laravel blog
ComposerでSocialiteをインストールする
$ composer require laravel/socialite
※Composerをインストールしていない人は、Composer(コンポーザー)を利用/インストールする方法をどうぞ。
config/app.php
を編集して、Socialiteを読み込む
'providers' => [
// Other service providers...
Laravel\Socialite\SocialiteServiceProvider::class,
],
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
Facebook for DevelopersからFacebookアプリ登録する
上記のような感じ。
» Facebook for Developers
Facebookアプリ情報をconfig/services.php
に記載する
'facebook' => [
'client_id' => env('FB_CLIENT_ID'),
'client_secret' => env('FB_CLIENT_SECRET'),
'redirect' => env('FB_URL'),
],
その後に、.envファイルに正確な情報を入力します。
FB_CLIENT_ID=107671987976516723
FB_CLIENT_SECRET=612379ac31ae9456787ece034bef9e8
FB_URL=http://localhost:8000/callback
FB_CLIENT_SECRET=612379ac31ae9456787ece034bef9e8
FB_URL=http://localhost:8000/callback
/login/facebook
にアクセスすると、Facebookログイン認証が動くように設定する
/app/Http/Controllers/Auth/LoginController.php
を編集します。
※環境に合わせて記載場所は変更してください。
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Socialite; //ここを追加
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
// ここを追加
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
// ここを追加
public function handleProviderCallback()
{
$user = Socialite::driver('facebook')->user();
dd($user);
}
}
ルーティング設定をする
Route::get('/login/facebook', 'SessionsController@redirectToProvider');
Route::get('/callback', 'SessionsController@handleProviderCallback');
これで完了:Facebookログインできます
http://localhost:8000/login/facebook
にアクセスするとFacebookログインできます。
※P.S:無料メルマガで発信中:過去の僕は「ブログ発信で5億円」を稼ぎました。次は「30億円」を目指します。挑戦しつつ、裏側の思考を「メルマガ」から発信します。不満足なら1秒で解約できます。無料登録は「こちら」です。