このチュートリアルでは、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()); } } }
User モデルの入力可能な配列に 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