本教學將引導您完成為 Laravel 應用程式新增 Facebook 登入功能的流程。
Laravel Socialite 為 Facebook、Twitter、Google、LinkedIn、GitHub、GitLab 和 Bitbucket 的 OAuth 身份驗證提供了一個富有表現力、流暢的介面。
透過 Composer 安裝:
composer require laravel/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
將這些路由加入您的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']);
建立一個新控制器:
php artisan make:controller Auth/FacebookController
實作控制器:
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()); } } }
將 facebook_id 加入到使用者模型中的可填入數組:
protected $fillable = [ 'name', 'email', 'password', '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
在您的登入檢視中,新增「使用 Facebook 登入」按鈕:
Login with Facebook
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3