이 튜토리얼은 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