laravel войти с учетной записью google

Я делаю приложение и хочу, чтобы пользователи входили в систему со своей учетной записью Google. У меня есть пользователь oauth-4-laravel, и у меня есть это:

UserController.php

// get data from input
        $code = Input::get('code');

        // get google service
        $googleService = Artdarek\OAuth\Facade\OAuth::consumer("Google");

        if (!empty($code)) {

            // This was a callback request from google, get the token
            $token = $googleService->requestAccessToken($code);

            // Send a request with it
            $result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true);

            $user = DB::select('select id from users where email = ?', array($result['email']));

            if (empty($user)) {
                $data = new User;
                $data->Username = $result['name'];
                $data->email = $result['email'];
                $data->first_name = $result['given_name'];
                $data->last_name = $result['family_name'];
                $data->save();
            }
            if (Auth::attempt(array('email' => $result['email']))) {

            return Redirect::to('/');
            }  else {
            echo 'error';    
            }
        }
        // if not ask for permission first
        else {
            // get googleService authorization
            $url = $googleService->getAuthorizationUri();

            // return to facebook login url
            return Redirect::to((string) $url);
        }
    }

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

if (Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password')))) {
            return Response::json(["redirect_to" => "/"]);

и с помощью входа в Google я получаю имя пользователя onlu, идентификатор пользователя и адрес электронной почты. Как войти непосредственно в систему после входа в Google?


person user3664324    schedule 22.05.2014    source источник
comment
@The Shift Exchange только что отредактировал мой код. Пожалуйста, посмотрите. теперь он показывает только сообщение об ошибке   -  person user3664324    schedule 22.05.2014


Ответы (1)


Если вам нужно зарегистрировать существующий экземпляр пользователя в вашем приложении, вы можете просто вызвать метод входа в систему с экземпляром:

$user = User::find(1);

Auth::login($user);

Это эквивалентно входу пользователя в систему с использованием учетных данных с использованием метода попытки.

Для получения дополнительной информации см.: http://laravel.com/docs/security#manually

person WillyBurb    schedule 21.08.2014