如何使用 OAuth(facebook、twitter、google)进行注册?
How to do a Sign Up with OAuth (facebook, twitter, google)?
我使用 Laravel (5) 作为我的 php 框架,它最近添加了一个用于社交身份验证的库(facebook、google、twitter 和 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 登录方法一样容易。
我使用 Laravel (5) 作为我的 php 框架,它最近添加了一个用于社交身份验证的库(facebook、google、twitter 和 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 登录方法一样容易。