Я пытаюсь настроить систему аутентификации с помощью Laravel 4 с логином Facebook. Я использую пакет madewithlove/laravel-oauth2 для Laravel 4.
Конечно, нет пароля для добавления в мою базу данных при входе пользователя в Facebook. Однако я пытаюсь проверить, находится ли идентификатор пользователя в базе данных, чтобы определить, следует ли мне создать новую сущность или просто войти в текущую. Я хотел бы использовать команды Auth для этого. У меня есть таблица под названием «фанаты».
Вот с чем я работаю:
$fan = Fan::where('fbid', '=', $user['uid']);
if(is_null($fan)) {
$fan = new Fan;
$fan->fbid = $user['uid'];
$fan->email = $user['email'];
$fan->first_name = $user['first_name'];
$fan->last_name = $user['last_name'];
$fan->gender = $user['gender'];
$fan->birthday = $user['birthday'];
$fan->age = $age;
$fan->city = $city;
$fan->state = $state;
$fan->image = $user['image'];
$fan->save();
return Redirect::to('fans/home');
}
else {
Auth::login($fan);
return Redirect::to('fans/home');
}
Модель вентилятора:
<?php
class Fan extends Eloquent {
protected $guarded = array();
public static $rules = array();
}
Когда я запускаю это, я получаю сообщение об ошибке:
Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface, instance of Illuminate\Database\Eloquent\Builder given
РЕДАКТИРОВАТЬ: Когда я использую: $fan = Fan::where('fbid', '=', $user['uid'])->first();
Я получаю сообщение об ошибке:
Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface, null given, called in /Applications/MAMP/htdocs/crowdsets/laravel-master/vendor/laravel/framework/src/Illuminate/Auth/Guard.php on line 368 and defined
Я не знаю, почему он дает мне эту ошибку. Есть ли у вас предложения о том, как я могу сделать эту работу? Спасибо за помощь.