首頁  >  文章  >  後端開發  >  如何在 Laravel 中實現“使用 Facebook 登入”

如何在 Laravel 中實現“使用 Facebook 登入”

王林
王林原創
2024-08-16 06:54:42825瀏覽

How to Implement

本教學將引導您完成在 Laravel 應用程式中新增 Facebook 登入功能的過程。

先決條件

  • Laravel 專案建立
  • 已安裝作曲家
  • 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 步:設定社交名流

將以下內容加入您的 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 步:更新使用者模型

將 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn