Laravelで「Facebookでログイン」を実装する方法

王林
リリース: 2024-08-16 06:54:42
オリジナル
842 人が閲覧しました

How to Implement

このチュートリアルでは、Laravel アプリケーションに Facebook ログイン機能を追加するプロセスについて説明します。

前提条件

  • Laravel プロジェクトのセットアップ
  • Composer がインストールされました
  • Facebook 開発者アカウント

ステップ 1: Facebook アプリを作成する

  1. Facebook 開発者に移動
  2. 「マイアプリ」をクリックし、「アプリの作成」をクリックします
  3. アプリの種類として「コンシューマー」を選択します
  4. アプリの詳細を入力してアプリを作成します
  5. アプリのダッシュボードで、アプリ ID とアプリのシークレットをメモします

ステップ2: Laravel Socialiteをインストールする

Laravel Socialite は、Facebook、Twitter、Google、LinkedIn、GitHub、GitLab、Bitbucket を使用した OAuth 認証への表現力豊かで流暢なインターフェイスを提供します。
Composer 経由でインストールします:

composer require laravel/socialite
ログイン後にコピー

ステップ 3: Socialite を構成する

config/services.php ファイルに以下を追加します:

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('FACEBOOK_REDIRECT_URI'),
],
ログイン後にコピー

次に、これらを .env ファイルに追加します。

FACEBOOK_CLIENT_ID=your_facebook_app_id
FACEBOOK_CLIENT_SECRET=your_facebook_app_secret
FACEBOOK_REDIRECT_URI=http://localhost:8000/login/facebook/callback
ログイン後にコピー

ステップ 4: ルートを設定する

これらのルートをroutes/web.phpに追加します:

use App\Http\Controllers\Auth\FacebookController;

Route::get('login/facebook', [FacebookController::class, 'redirectToFacebook'])->name('login.facebook');
Route::get('login/facebook/callback', [FacebookController::class, 'handleFacebookCallback']);
ログイン後にコピー

ステップ 5: FacebookController を作成する

新しいコントローラーを作成します:

php artisan make:controller Auth/FacebookController
ログイン後にコピー

コントローラーを実装します:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;

class FacebookController extends Controller
{
    public function redirectToFacebook()
    {
        return Socialite::driver('facebook')->redirect();
    }

    public function handleFacebookCallback()
    {
        try {
            $user = Socialite::driver('facebook')->user();
            $finduser = User::where('facebook_id', $user->id)->first();

            if ($finduser) {
                Auth::login($finduser);
                return redirect()->intended('dashboard');
            } else {
                $newUser = User::create([
                    'name' => $user->name,
                    'email' => $user->email,
                    'facebook_id'=> $user->id,
                    'password' => encrypt('123456dummy')
                ]);

                Auth::login($newUser);
                return redirect()->intended('dashboard');
            }
        } catch (\Exception $e) {
            dd($e->getMessage());
        }
    }
}
ログイン後にコピー

ステップ 6: ユーザーモデルを更新する

User モデルの入力可能な配列に facebook_id を追加します。

protected $fillable = [
    'name',
    'email',
    'password',
    'facebook_id',
];
ログイン後にコピー

ステップ 7: Facebook ID をユーザーテーブルに追加する

新しい移行を作成します:

php artisan make:migration add_facebook_id_to_users_table
ログイン後にコピー

新しい移行ファイル内:

public function up()
{
    Schema::table('users', function ($table) {
        $table->string('facebook_id')->nullable();
    });
}

public function down()
{
    Schema::table('users', function ($table) {
        $table->dropColumn('facebook_id');
    });
}
ログイン後にコピー

移行を実行します:

php artisan migrate
ログイン後にコピー

ステップ 8: ログインボタンを追加する

ログイン ビューに、「Facebook でログイン」ボタンを追加します。

<a href="{{ route('login.facebook') }}" class="btn btn-primary">
    Login with Facebook
</a>
ログイン後にコピー

以上がLaravelで「Facebookでログイン」を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート