LoginSignup
20
20

More than 5 years have passed since last update.

LaravelでSocialiteでソーシャルログイン

Last updated at Posted at 2016-02-18

環境

利用するツールのバージョンなど。

  • Laravel5.2
  • Socialite

実装するソーシャル

  • Facebook(とりあえず。随時追加予定)

ログインボタンは必要に応じてここを利用すると便利。

準備

基本適には、本家の解説通りにやればいい。めんどいのはどちらかというと各ソーシャルサービスのAPIの仕様の方。

インストール

composer.jsonいじって、updateでもいいけど、本家の通り、

composer require laravel/socialite

config/app.phpの編集

config/app.phpに下記の記述を追加。

provider

Laravel\Socialite\SocialiteServiceProvider::class,

aliase

'Socialite' => Laravel\Socialite\Facades\Socialite::class,

config/services.phpの編集

config/services.phpに下記を追記します。値は、静的に書いてもいいですが、.envに書きましょう。

'facebook' => [
    'client_id'     => env('FACEBOOK_ID'),
    'client_secret' => env('FACEBOOK_SECRET'),
    'redirect'      => env('FACEBOOK_CALLBACKURL'),
],

.envの例

#FACEBOOK
FACEBOOK_ID=1234567890
FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
FACEBOOK_CALLBACKURL=http://localhost:8000/facebook/callback

注意1)

Facebookの開発者ページにてApp IDとApp Secretを調べ、client_id。client_secretとして記述します。

注意2)

なお、ネットのサンプルでredirect先URLをurl()ヘルパー関数で取得している例がありましたが、私の環境ではエラーとなったので、.envにてURLはフルパスで記述しました。

注意3)

コールバックURLにlocalhostを指定しているとFacebookでの認証時にエラーになります。これを避けるためには、facebookの開発者ページにて、

[Settings](左メニュー) -> [Advanced](上のタブ) -> Valid OAuth redirect URIsに必要なURLを記述します(ここではhttp://localhost:8000/)。

実装

Route

Route::group(['middleware' => 'web'], function () {

    //FBログイン(ボタンのリンク先)
    Route::get('facebook','FacebookController@facebookLogin');
    //認証後の戻りURL
    Route::get('facebook/callback','FacebookController@facebookCallback');

});

Controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

//追加
use Laravel\Socialite\Contracts\Factory as Socialite;

class FacebookController extends Controller
{
    //
    protected $socialite;

    //コンストラクタ
    public function __construct(Socialite $socialite)
    {
        $this->socialite = $socialite;
    }

    //ログイン
    public function facebookLogin()
    {
        //facebookへリダイレクト
        return $this->socialite->driver('facebook')->redirect();
    }

    //コールバック
    public function facebookCallback()
    {
        //ユーザー情報を取得
        $fuser = $this->socialite->driver('facebook')->user();

        //各情報の取得
        $fuser->getId();
        $fuser->getName();
        $fuser->getEmail();

        //とりあえず表示
        return $fuser->getEmail();
    }
}

その他

独自ドライバの実装についてはこちらをご覧ください。

20
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
20