2014-01-06 5 views
0

Мне нужна помощь сейчас Я не могу войти в систему с facebook, посмотрим мой код.Laravel 4 jenssegers-mongodb - как я могу реализовать Auth с facebook

$code = Input::get('code'); 
if (strlen($code) == 0) 
    return Redirect::to('/')->with('message', 'There was an error communicating with Facebook'); 

$facebook = new Facebook(Config::get('facebook')); 
$uid = $facebook->getUser(); 

if ($uid == 0) 
    return Redirect::to('/')->with('message', 'There was an error'); 

$me = $facebook->api('/me'); 

$existing_user = User::whereFBid($uid); 

if (empty($existing_user)) 
{ 
    $user['name'] = $me['first_name'].' '.$me['last_name']; 
    $user['email'] = $me['email']; 
    $user['photo'] = 'https://graph.facebook.com/'.$me['username'].'/picture?type=large'; 

    $user['fbid'] = $uid; 
    $user['username'] = $me['username']; 
    $user['access_token'] = $facebook->getAccessToken(); 

    $rsUser = User::registerUser($user); 
} 
else 
{ 
    $user = new User(); 
    $user->fbid = $uid; 
    Auth::login($user); 
} 

return Redirect::to('/')->with('message', 'Logged in with Facebook'); 

Мой маршрут Файл

Route::get('/', function() 
{ 
    $data = array(); 

    if (Auth::check()) 
    { 
     $data = Auth::user(); 
     var_dump($data);exit; 
    } 
    else 
    { 
     echo 'auth check failed';exit; 
    } 

    return View::make('hello', array('data'=>$data)); 
}); 

Мои модели пользователя уже добавлено использование Jenssegers \ MongoDB \ модель как красноречивы

Auth :: Логин ($ пользователю) это пропуск, но когда мой код перенаправления '/' и Auth :: check() это не работа, а другое условие. Как я могу это решить, кто может помочь? Большое вам спасибо, извините за мой английский.

ответ

0

В своем заявлении else вы обновляете пользователя, но это не имеет смысла для меня. Перед утверждением if вы пытаетесь найти пользователя. Тогда есть ваш оператор if, когда пользователь не существует. Тогда есть ваше другое выражение, поскольку пользователь существует. Таким образом, вы не должны создать новую модель пользователя:

else 
{ 
    $user = new User(); 
    $user->fbid = $uid; 
    Auth::login($user); 
} 

Но вы должны использовать переменную $ existing_user войти в

else 
{ 
    Auth::login($existing_user); 
} 
+0

метод whereFBid в моей модели общественная статическая функция whereFBid. ($ fbid) { $ rsUser = DB :: collection ('users') -> где ('fbid', $ fbid) -> first(); return $ rsUser; } и я делаю контроллер от вашего совета, но это ошибка: Аргумент 1 передается Осветить \ Auth \ Guard :: логин() должен реализовать интерфейс ILLUMINATE \ Auth \ пользовательским интерфейсом, массив заданного –

+0

Почему? Хорошо, игнорируйте этот статический метод. Прочитайте это: http://laravel.com/docs/eloquent#query-scopes или измените «$ existing_user = Пользователь :: whereFBid ($ uid);» to "$ existing_user = User :: where ('fbid', '=', $ uid) -> first();" и попробуй еще раз. Использование статических методов в моделях, вероятно, не является (и никогда не будет) способом. – Jaco

 Смежные вопросы

  • Нет связанных вопросов^_^