もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

laravel/socialiteを使ってFacebookログインしてみる。

参考サイト

概要

お手伝いしているサイトで、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側もろもろ設定

f:id:kojirooooocks:20180131042345p:plain

↑の画面で、APP IDとAPP SECRETを確認して、.envの FACEBOOK_APP_IDFACEBOOK_APP_SECRET に書き写す

f:id:kojirooooocks:20180131042401p:plain

↑の画面で、.envで設定しているFACEBOOK_CALLBACK_URLを設定する

実行してみる。

facebook login リンクをクリックすると以下のような画面に行くと思います。

f:id:kojirooooocks:20180131042526p:plain

ログインを実行すると、設定したコールバック先に通信が来ます。

現状だと以下のような dd() で表示しているデータが表示されます。

f:id:kojirooooocks:20180131042537p:plain

感想

コード量も少なくあっという間に出来ました。

Laravelは本当にいろんなライブラリでてて楽です。

他にも良さそうなのあったら随時記事あげていこうと思います。