مارک پلاس

تکنولوژی نوین اینترنتی

Laravel Socialite احراز هویت با گوگل و فیسبوک

دسته‌بندی‌ها

Laravel Socialite احراز هویت با گوگل و فیسبوک
Laravel Socialite احراز هویت با گوگل و فیسبوک

Laravel Socialite یک پکیج لاراول برای احراز هویت از طریق سرویس‌های مختلف مثل گوگل، فیسبوک، گیت‌هاب و غیره هست. این پکیج می‌تواند فرایند ورود کاربران از طریق این سرویس‌ها رو خیلی ساده‌تر کنه.


🚀 Laravel Socialite

برای احراز هویت کاربران از طریق سرویس‌های اجتماعی (مثل گوگل، فیسبوک و غیره)


🧰 نصب Socialite

1. نصب پکیج Socialite:

اولین قدم نصب پکیج laravel/socialite است:

bash
composer require laravel/socialite

⚙️ پیکربندی Socialite

2. تنظیمات در .env

برای احراز هویت با سرویس‌های مختلف، باید کلیدها و رازهای API رو از سرویس‌دهنده‌ها (مثل گوگل یا فیسبوک) بگیرید و در فایل .env قرار بدید.

مثال برای گوگل و فیسبوک:

env
GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret GOOGLE_REDIRECT_URI=http://your-domain.com/login/google/callback FACEBOOK_CLIENT_ID=your-facebook-client-id FACEBOOK_CLIENT_SECRET=your-facebook-client-secret FACEBOOK_REDIRECT_URI=http://your-domain.com/login/facebook/callback

3. اضافه کردن به config/services.php

در فایل config/services.php سرویس‌های گوگل و فیسبوک رو پیکربندی می‌کنیم.

php
return [ 'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect' => env('GOOGLE_REDIRECT_URI'), ], 'facebook' => [ 'client_id' => env('FACEBOOK_CLIENT_ID'), 'client_secret' => env('FACEBOOK_CLIENT_SECRET'), 'redirect' => env('FACEBOOK_REDIRECT_URI'), ], ];

🚀 استفاده از Socialite برای احراز هویت

1. ایجاد روتر برای هدایت به صفحه احراز هویت

در فایل routes/web.php برای هر سرویس یک مسیر برای هدایت کاربر به صفحه احراز هویت اضافه می‌کنیم.

مسیر برای گوگل:

php
use Laravel\Socialite\Facades\Socialite; Route::get('login/google', function () { return Socialite::driver('google')->redirect(); }); Route::get('login/google/callback', function () { $user = Socialite::driver('google')->user(); // اطلاعات کاربر رو ذخیره کنین یا لاگین کنید // برای مثال: Auth::login($user); return redirect()->route('home'); });

مسیر برای فیسبوک:

php
Route::get('login/facebook', function () { return Socialite::driver('facebook')->redirect(); }); Route::get('login/facebook/callback', function () { $user = Socialite::driver('facebook')->user(); // اطلاعات کاربر رو ذخیره کنین یا لاگین کنید // برای مثال: Auth::login($user); return redirect()->route('home'); });

💬 توضیح کد:

  • اولین مسیر: کاربر رو به صفحه احراز هویت گوگل یا فیسبوک هدایت می‌کنه.

  • دومین مسیر (Callback): بعد از اینکه کاربر احراز هویت کرد، به این مسیر باز می‌گرده. اینجا اطلاعات کاربر از سرویس (مثل گوگل یا فیسبوک) دریافت میشه و می‌تونید اون رو ذخیره کنید یا کاربر رو لاگین کنید.


🔐 ذخیره اطلاعات کاربر

زمانی که کاربر از طریق گوگل یا فیسبوک وارد شد، داده‌های مربوط به اون کاربر مثل نام، ایمیل و تصویر پروفایل رو می‌تونید دریافت کنید:

php
$user = Socialite::driver('google')->user(); $name = $user->getName(); $email = $user->getEmail(); $avatar = $user->getAvatar();

1. ذخیره یا به‌روز رسانی اطلاعات در پایگاه داده:

php
// فرض کنید User مدل شماست $user = User::where('email', $email)->first(); if (!$user) { // اگر کاربر وجود نداره، یک کاربر جدید بسازید $user = User::create([ 'name' => $name, 'email' => $email, 'avatar' => $avatar, 'password' => bcrypt(str_random(16)), // یک پسورد تصادفی بسازید ]); } // وارد کردن کاربر Auth::login($user);

🧑‍💻 نکات مهم:

  • حذف یا عدم ذخیره اطلاعات: اگر بخواهید فقط ورود انجام بشه و اطلاعات کاربر رو ذخیره نکنید، می‌تونید فقط از متد Auth::login() استفاده کنید.

  • عدم ذخیره پسورد: وقتی از Socialite استفاده می‌کنید، هیچ وقت پسورد کاربر ذخیره نمی‌شود. این فقط برای ورود به سیستم هست.

  • استفاده از findOrCreate: به‌جای نوشتن کدهای زیاد برای ذخیره و به‌روز رسانی، می‌تونید یک متد خاص بسازید که این کارها رو به صورت اتوماتیک انجام بده.


📋 جمع‌بندی

سرویسمرحله
نصب پکیج Socialitecomposer require laravel/socialite
پیکربندی در .envذخیره کلیدها و مقادیر در .env
پیکربندی در services.phpافزودن مقادیر به config/services.php
تعریف مسیرهااستفاده از Socialite::driver('google')->redirect()
دریافت اطلاعات کاربرSocialite::driver('google')->user()

محتوای مرتبط

پست‌های مرتبط