راکت
حل شده

احراز هویت گوگل در لاراول

4 پاسخ

سلام
دوستان کسی میتونه راهنمایی کنه؟میخوام احراز هویت با گوگل کنم به ارور زیر بر میخورم
Laravel\Socialite\Two\InvalidStateException
این روتینگ

Route::get('/login_google_press',[\App\Http\Controllers\GoogleAuthController::class,'redirectToProvider'])->name('login_google_press');

Route::get('/google-login',[\App\Http\Controllers\GoogleAuthController::class,'check'])->name('google-login');

کنترلر ها

 public function check()
    {

            $googleUser = Socialite::driver('google');
            $googleUser = $googleUser->user();
            dd($googleUser);
            $existUser = User::where('email', $googleUser->email)->first();

            if ($existUser) {
                Session::flash('google_login','وارد شدی');
                Auth::loginUsingId($existUser->id);
                return redirect('login');

            } else {
                Session::flash('google_login','شما حساب کاربری با این ایمیل ندارید،لطفا به ادمین مراجعه کنید');
               return redirect('login');
            }

    }
}

اینجا ارور میده

        //dd(Socialite::driver('google')->user());
ثبت پرسش جدید

پاسخ‌ها

4
محمدرضا
محمدرضا
@heydari1200
بهترین پاسخ

سلام
الحمدلله مشکل حل شد...
https://stackoverflow.com/questions/30660847/laravel-socialite-invalidstateexception
داخل هاست اصلی درست کار میکنه...

مهدی مشایخی
مهدی مشایخی
@MahdiMashayekhi

تخصص: برنامه نویس پایتون - ماشین لرنینگ - جنگو

سلام
احتمال زیاد به علت csrf token هست و تایید نمیشه این رو در هدتون بنويسید

<meta name="csrf-token" content="{{ csrf_token() }}">

و سپس این دو فانکشن رو پیاده سازی کنید

public function redirectToProvider()
{
    return Socialite::driver('google')
        ->with(['state' => csrf_token()])
        ->redirect();
}
public function check()
{
    try {
        $googleUser = Socialite::driver('google')->stateless()->user();
    } catch (\Exception $e) {
        return redirect('/login_google_press');
    }

    $existUser = User::where('email', $googleUser->email)->first();

    if ($existUser) {
        Session::flash('google_login','وارد شدی');
        Auth::loginUsingId($existUser->id);
        return redirect('login');
    } else {
        Session::flash('google_login','شما حساب کاربری با این ایمیل ندارید،لطفا به ادمین مراجعه کنید');
        return redirect('login');
    }
}
محمدرضا
محمدرضا
@heydari1200

ممنون از توجهتون
متاسفانه این خط اجرا نمیشه باز هم

        $googleUser = Socialite::driver('google')->stateless()->user();

شاید پاسخ شما همین‌جا باشد

محمدرضا
محمدرضا
@heydari1200

لطفا یه نفر راهنمایی کنه...
مقدار user رو null بر میگردونه که به این خطا میخوره

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام