Written by Manabu Bannai

【Laravel5.4】SNS(Facebook)ログインを実装する方法【Socialite】

Laravel PROGRAMMING

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

下記コマンドでLaravelのバージョンを確認できます。

$php artisan –version
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

/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秒で解約できます。無料登録は「こちら」です。