我使用Laravel(5)作为我的php框架,它最近添加了一个用于社交身份验证的库(facebook、谷歌、推特和github)。
我一直想知道如何使用OAuth进行注册,登录可以通过OAuth获取用户的电子邮件,检查它是否存在于您的数据库中,如果存在,则登录该用户。但是你会怎么注册呢?
Mathius-我最近在一个网站上做了一些类似于你所描述的事情,这就是对我有效的:
public function syncUserDetails($userData)
{
// First I check to see if there is a user in the DB
// with the oAuth email address
if ( $user = $this->user->where('email', $userData->email)->first() )
{
// If there is a user, I simply update their local info
// with what is on their oAuth account
$user->token = $userData->token;
$user->google_id = $userData->id;
$user->name = $userData->name;
$user->avatar = $userData->avatar;
$user->first_name = $userData->user['given_name'];
$user->last_name = $userData->user['family_name'];
$user->save();
return $user;
}
// Otherwise, if the user doesn't already exist,
// I create them in my local user's DB
return $this->user->firstOrCreate([
'email' => $userData->email,
'token' => $userData->token,
'google_id' => $userData->id,
'name' => $userData->name,
'avatar' => $userData->avatar,
'first_name' => $userData->user['given_name'],
'last_name' => $userData->user['family_name']
]);
}
这是我用来登录用户的。然而,您可以很容易地将其与常规的Laravel登录方法一起运行。