Laravel 5 社会名流重复条目
Laravel 5 Socialite Duplicate entry
我将 socialite 与手动注册一起实施,其中用户可以选择使用 facebook 进行注册。但我注意到,如果用户首先通过手动注册和注销注册,然后返回并使用 facebook 注册,则会产生错误
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry"
这是我当前的 UserRepository
namespace App\Repositories;
use App\User;
class UserRepository{
public function findByUsernameOrCreate($userData)
{
return User::firstOrCreate([
'first_name' => $userData->first_name,
'last_name' => $userData->last_name,
'email' => $userData->email
]);
}
}
我最近遇到了这个问题。我正在测试预注册用户使用 facebook 登录并在他们登录时更新他们的头像和电子邮件的能力。
假设您可以通过电子邮件地址检查现有(非 facebook)用户。
$user = User::where('email', $userData->email)->first();
if ($user){
// Update existing user with facebook data.
$user->email = $userData->email;
// Any other fields you want to update.
$user->avatar = $userData->avatar;
$user->save();
return $user;
}
那么你原来的功能在这里。
Mark 是对的,但是每次用户连接到 Facebook 时数据都会更新。这里有一些改进:
$authUser = User::where('email', $existingUser->email)->first();
if ($authUser){
// Check and update if Facebook data doesn't exists
if(!($authUser->facebook_id)){
$authUser->facebook_id = $existingUser->id;
$authUser->avatar = $existingUser->avatar;
$authUser->save();
}
return $authUser;
}
// following by your function here...
我将 socialite 与手动注册一起实施,其中用户可以选择使用 facebook 进行注册。但我注意到,如果用户首先通过手动注册和注销注册,然后返回并使用 facebook 注册,则会产生错误
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry"
这是我当前的 UserRepository
namespace App\Repositories;
use App\User;
class UserRepository{
public function findByUsernameOrCreate($userData)
{
return User::firstOrCreate([
'first_name' => $userData->first_name,
'last_name' => $userData->last_name,
'email' => $userData->email
]);
}
}
我最近遇到了这个问题。我正在测试预注册用户使用 facebook 登录并在他们登录时更新他们的头像和电子邮件的能力。
假设您可以通过电子邮件地址检查现有(非 facebook)用户。
$user = User::where('email', $userData->email)->first();
if ($user){
// Update existing user with facebook data.
$user->email = $userData->email;
// Any other fields you want to update.
$user->avatar = $userData->avatar;
$user->save();
return $user;
}
那么你原来的功能在这里。
Mark 是对的,但是每次用户连接到 Facebook 时数据都会更新。这里有一些改进:
$authUser = User::where('email', $existingUser->email)->first();
if ($authUser){
// Check and update if Facebook data doesn't exists
if(!($authUser->facebook_id)){
$authUser->facebook_id = $existingUser->id;
$authUser->avatar = $existingUser->avatar;
$authUser->save();
}
return $authUser;
}
// following by your function here...