Laravel 5和Socialite,如何保存在数据库中并登录


Laravel 5 and Socialite, how to save in the database and log-in

阅读后:http://laravel.com/docs/5.0/authentication我能够使用Socialite:从OAuth提供商(Facebook)检索用户详细信息

$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

但我找不到任何关于如何将用户保存在数据库中或将用户登录的进一步文档

我想做相当于:

Auth::attempt(['email' => $email, 'password' => $password])

但对于通过Socialite检索到的详细信息(我没有密码)

你能给我看一个通过Socialite检索用户数据时使用"Auth"的例子吗?

添加到"users"表的新列:facebook_user_id。每次用户尝试通过Facebook登录时,Facebook都会返回相同的用户id。

public function handleProviderCallback($provider)
{
    $socialize_user = Socialize::with($provider)->user();
    $facebook_user_id = $socialize_user->getId(); // unique facebook user id
    $user = User::where('facebook_user_id', $facebook_user_id)->first();
    // register (if no user)
    if (!$user) {
        $user = new User;
        $user->facebook_id = $facebook_user_id;
        $user->save();
    }
    // login
    Auth::loginUsingId($user->id);
    return redirect('/');
}

拉拉威尔社会主义者是如何运作的

public function redirectToProvider()
{
   // 1. with this method you redirect user to facebook, twitter... to get permission to use user data
   return Socialize::with('github')->redirect();
}
public function handleProviderCallback()
{
   // 2. facebook, twitter... redirects user here, where you write code to log in user
   $user = Socialize::with('github')->user();
}