Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 03.01.2015 23:43:52

Авторизация Facebook и Google

Планируется только авторизация пользователей через указанные сервисы.
Посоветуйте что будет оптимальным вариантом с точки зрения затрат по времени интеграции и в поддержке кода со временем?

1. Подключить Facebook и Google SDK и каждый отдельно настроить
http://maxoffsky.com/code-blog/integrat … plication/
https://github.com/TheMonkeys/laravel-google-auth

2. HybridAuth
https://github.com/FrozenNode/Social

3. OAuth wrapper for Laravel 4
https://github.com/artdarek/oauth-4-laravel

Не в сети

#2 07.01.2015 19:53:11

Re: Авторизация Facebook и Google

Привет! Я использую во всех своих проектах artdarek/oauth-4-laravel - у него там в документации указаны все примеры для этих социальных сетей - 5 минут и все работает, а если с перспективой на будущее - можно посмотреть исходники методов и в дальнейшем уже использовать, не только для авторизации, но и для постов и чего нибудь еще smile

С остальными сравнить не могу, т.к. использовал только его..

Не в сети

#3 22.01.2015 12:03:12

Arat
Откуда: Киев
Сообщений: 116

Re: Авторизация Facebook и Google

lieroes пишет:

Привет! Я использую во всех своих проектах artdarek/oauth-4-laravel - у него там в документации указаны все примеры для этих социальных сетей - 5 минут и все работает

Я вот тоже новичок, не пинайте smile
Документация и примеры вроде понятны, но не до конца.
Вот, например, мне нужно данные, которые отдает та или иная соц.сеть (почта, имя, айдишник, фото, дата рождения) записать в БД.
Где, что и какая функция это отдают?

Не в сети

#4 22.01.2015 18:40:32

Re: Авторизация Facebook и Google

Необходимо создать route, который будет ссылаться на эту функцию.

public function loginWithFacebook() {

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

    // get fb service
    $fb = OAuth::consumer( 'Facebook' );

    // check if code is valid

    // if code is provided get user data and sign in
    if ( !empty( $code ) ) {

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

        // Send a request with it
        $result = json_decode( $fb->request( '/me' ), true );

        // В массиве $result содержатся все данные, которые передает вам facebook.
        dd($result);

    }
    // if not ask for permission first
    else {
        // get fb authorization
        $url = $fb->getAuthorizationUri();

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

}

В массиве $result содержатся все данные, которые передает вам facebook.

Для каждой социальной сети этот код может немножко отличаться, т.к. отличаются запросы к данным, нужно читать документацию к API каждой, отдельной соц. сети. Допустим перед тем, что бы работал этот пример - вам необходимо создать и настроить свое приложение на facebook (вся информация как это сделать - https://developers.facebook.com) и указать app key & secret key вашего приложения, в настройках этого package..

Изменено lieroes (22.01.2015 18:44:08)

Не в сети

#5 23.01.2015 03:19:06

Re: Авторизация Facebook и Google

Добавлю пару слов, чтобы было понятно, как записать в БД.
3. OAuth wrapper for Laravel 4

	public function loginWithFacebook()
	{
		$code = Input::get('code');
		$fb = OAuth::consumer( 'Facebook' ,'http://myhost.dev/login/fb');
		if ( !empty( $code ) ) {
			$token = $fb->requestAccessToken( $code );
			$result = json_decode( $fb->request( '/me' ), true );
			if ($user = User::where( 'social_id', '=' , $result['id']  )->first()) {
				 Auth::login($user);
				 return Redirect::to('profile');
			} else {
				$user = new User();
				$user->email = $result['email'];
				$user->social_id = $result['id'];
				$user->save();
				$profile = new UserProfile();
				$profile->firstname = $result['first_name'];
                $profile->lastname = $result['last_name'];
				$user->profile()->save($profile);
				Auth::login( $user );
				return Redirect::to('profile');
			}
		} else {
			$url = $fb->getAuthorizationUri();
			return Redirect::to((string)$url );
		}
		
	}

Изменено zogxray (23.01.2015 03:20:09)

Не в сети

#6 23.01.2015 10:02:00

Arat
Откуда: Киев
Сообщений: 116

Re: Авторизация Facebook и Google

т.е. можно создать отдельный контроллер для авторизации и там перечислить все методы по каждой соцсети и в роутах прописать ссылку на каждый из этих методов?

Не в сети

#7 23.01.2015 15:17:30

Re: Авторизация Facebook и Google

Да, почему бы и нет)

Не в сети

Подвал раздела