Laravel Социальный Google Signin не работает с областью профиля - PullRequest
0 голосов
/ 16 апреля 2020

У меня проблема с реализацией входа в систему Social в проекте Laravel с использованием пакета Socialite.

При попытке войти в Google, он выдает пустую строку ошибки и никаких сообщений об исключениях, но когда я пытаюсь удалить область профиля, он регистрируется, но данные профиля зарегистрированного пользователя отсутствуют.

Я ищу результаты, но ничего не получил даже от его Socialite Github

Это код из пакета Socialite в моем контроллере


/**
     * Obtain the user information from Google.
     *
     * @return \Illuminate\Http\Response
     */
    public function googleLogin()
    {
        try {
            // Not able to get the user data
            $user = Socialite::driver('google')->user();

        } catch (\Exception $e) {
            return redirect('/login')->with('error','Try after some time');
        }
        $existingUser = User::where('social_id', $user->id)->first();

                if (!empty($existingUser)) {

                    $getType = UserType::where('user_id',$existingUser['id'])->get()->toArray();
                    $count = count($getType);
                        if ($count == 2) {
                            return view('Front.types')->with('getTypes',$getType);
                        }elseif($count == 1){

                            if ($getType[0]['user_type'] == "consumer") {
                                \Auth::loginUsingId($existingUser['id']);
                                return redirect()->intended('/');

                            }
                            if ($getType[0]['user_type'] == "bizzowner") {
                                \Auth::loginUsingId($existingUser['id']);

                                return redirect('business/dashboard');
                            }
                        }

                        // if(!session()->has('url.intended'))
                        // {
                        //     session(['url.intended' => url()->previous()]);
                        // }

                }

Я всегда получаю это сообщение об ошибке на дисплее пользователя

Попробуйте через некоторое время

Получено это сообщение об исключении

Laravel\Socialite\Two\InvalidStateException {#616 ▼
  #message: ""
  #code: 0
  #file: "/home/greenalleymart/public_html/vendor/laravel/socialite/src/Two/AbstractProvider.php"
  #line: 210
  trace: {▼
    /home/greenalleymart/public_html/vendor/laravel/socialite/src/Two/AbstractProvider.php:210 {▶}
    /home/greenalleymart/public_html/app/Http/Controllers/Front/UserController.php:367 {▼
      App\Http\Controllers\Front\UserController->googleLogin() …
      › try {
      ›     $user = Socialite::driver('google')->user();
      ›     dd($user);
    }

1 Ответ

0 голосов
/ 19 апреля 2020

После долгих поисков и выполнения разных вещей, наконец-то нашли решение.

Мы должны запустить Google OAUth2 stateless()

Рабочий код

    public function redirectToGoogle(){
        return Socialite::driver('google')
            ->stateless()
            ->redirect();
    }




    /**
     * Obtain the user information from Google.
     *
     * @return \Illuminate\Http\Response
     */
        public function googleLogin()
    {
        try {
            $user = Socialite::driver('google')->stateless()->user();
            // dd($user);
        } catch (\Exception $e) {
            return redirect('/login')->with('error','Try after some time');
        }
            $existingUser = User::where('social_id', $user->id)->first();

        /** Your code */
    }
...