لاگین با گوگل در لاراول

ساخت لاگین با گوگل توی لاراول ساده تر از اونیه که فکرشو بکنید فقط یکم باید دقت کنید

کار با نصب laravel/socialite شروع میشه

با این پکیج میتونید با linkedin, google, github, gitlab لاگین بسازید

نصبش با کامپوزره :

composer require laravel/socialite

مشاهده آموزش کامل توی یوتوب (۲۱ دقیقه) : https://www.youtube.com/watch?v=05mL6f4xCAA

سورس نمونه توی گیتهاب :‌ https://github.com/shopid-dev/laravel-socialite

بعدش باید توی config/services.php

اینو اد کنید :

'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => 'http://example.com/callback-url',
],

مقادیر client_id و client_secret باید از گوگل بگیرید
redirect هم آدرس سایت و مسیریه که وقتی از گوگل برمیگردید باید ست کنید

گرفتن client_id و client_secret از گوگل

مشاهده فیلم این قسمت توی یوتوب

این قسمتش تقریبا سخت ترین قسمتش شاید باشه چون اینجا یکم تحریمه ولی مشکلی بابت لاگین کردن نداره فقط گرفتنش یکم سخته
فقط توی گوگل بزنید google developer console و وارد سایتش بشید

اگه پروژه ای نداشته باشید باید یدونه بسازید

اکه قبلا consent screen کانفیگ نکرده باشید اینجا میگه برید کانفیگ کنید

اینجا External بزنید و Create بزنید

اینجا همه چیزایی که میخواد وارد کنید البته خیلیش آپشنال هست

آخرشم SAVE AND CONTINUE بزنید

و برید توی قسمت Credentials


بعدش از اون منوی بالا روی CREATE CREDENTIALS + کلیک کنید

و بزنید روی OAuth client ID

بعدش Web application انتخاب کنید

اینجا هم موارد خواسته شده پر کنید

بعدش میریم توی سورسمون و اون redirect میاریم

میزنیم توی Authorized redirect URIs و Create میزنیم

و در آخر client_id و client_secret میاد !

و میریم ثبتش میکنیم

مشاهده این قسمتش توی یوتوب

حالا یه روت میسازیم که وقتی میریم توش بره تو گوگل به همین سادگی !


use Laravel\Socialite\Facades\Socialite;
//.
//.
Route::get("/login", function () {  
return Socialite::driver('google')->redirect();
});

و روت بازگشتمون هم میسازیم :
به این صورت که با firstOrCreate روی مدل User اگه کاربر قبلا ثبت نام نبود رجیسترش میکنیم با یه پسورد رندم ولی اگه بود انتخابش میکنیم و در آخر میدیمش به Auth::login و احراز هویت تکمیل میشه !

Route::get("/google-login", function () {
    $s_user = Socialite::driver('google')->user();
    $user = User::firstOrCreate(
        ['email' => $s_user->email],
        [
            'name' => $s_user->name,
            'password' => Hash::make(Str::random(8))
        ]
    );
    Auth::login($user, true);
         echo "hello ".Auth::user()->name;
});

مشاهده فیلم نتیجه ی نهایی :

https://www.youtube.com/watch?v=05mL6f4xCAA&t=1171s