阅读后: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检索的用户数据使用“身份验证”?

最佳答案

将新列添加到“用户”表中: 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('/');
}

Laravel社交名流如何工作?
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();
}

关于php - Laravel 5和Socialite,如何保存在数据库中并登录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28470551/

10-11 05:49