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

Agu*_*ndo 6 php laravel

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

$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();
Run Code Online (Sandbox Code Playgroud)

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

我想做相当于:

Auth::attempt(['email' => $email, 'password' => $password])
Run Code Online (Sandbox Code Playgroud)

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

你能否告诉我一个关于使用"Auth"通过Socialite检索用户数据的例子?

Man*_*s D 15

添加到" 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('/');
}
Run Code Online (Sandbox Code Playgroud)

Laravel Socialite如何运作?

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 只想添加您想要使用BIGINT存储返回的Facebook用户ID.典型的id看起来像10153582596228606,它不能适合4字节的int (3认同)