Php Laravel 5.1和社交名流问题
这不是一篇关于我现在遇到的问题的帖子。我计划在我的应用程序中使用Php Laravel 5.1和社交名流问题,php,laravel,laravel-5.1,laravel-socialite,Php,Laravel,Laravel 5.1,Laravel Socialite,这不是一篇关于我现在遇到的问题的帖子。我计划在我的应用程序中使用Laravel Socialite插件,我已经有了一个使用Laravel内置的Auth系统的完全工作的登录/注册系统,但我想知道是否有一个好方法允许已经在我的应用程序中拥有帐户的用户将他们的社交档案链接到已经存在的帐户 计划是,他们可以使用用户名和密码或任何社交档案登录。到目前为止,我所做的所有研究都解释了如何建立社交名流,并利用这些数据注册/登录新用户,但我找不到任何东西可以将两者结合在一起 我不想找人为我写这篇文章,所以请不要被
Laravel Socialite
插件,我已经有了一个使用Laravel内置的Auth
系统的完全工作的登录/注册系统,但我想知道是否有一个好方法允许已经在我的应用程序中拥有帐户的用户将他们的社交档案链接到已经存在的帐户
计划是,他们可以使用用户名和密码或任何社交档案登录。到目前为止,我所做的所有研究都解释了如何建立社交名流,并利用这些数据注册/登录新用户,但我找不到任何东西可以将两者结合在一起
我不想找人为我写这篇文章,所以请不要被这篇文章弄糊涂
谢谢你提供的任何信息,
安迪绝对是
我在一个网站上有FB和Twitter OAuth。我这样做的方法是将oauth\u facebook\u id
和oauth\u twitter\u id
列添加到users
表中(以及avatar
列,如果需要的话)
我将路由设置为/auth/{provider}
和/auth/{provider}/callback
,例如/auth/facebook
和/auth/facebook/callback
在我的AuthController
上的handleProviderCallback($provider)
方法中,我获取返回用户的详细信息,并检查他们是否已经存在于我的数据库中,以及他们的电子邮件、Facebook OAuth ID或Twitter OAuth ID。如果他们存在,我设置他们的电子邮件、OAuth ID和他们的化身,如果他们不存在,我创建他们。然后我把它们登录
$user = Socialite::driver($provider)->user();
$user_query = User::where('email', $user->email)
->orWhere('oauth_facebook_id', $user->id)
->orWhere('oauth_twitter_id', $user->id)
->get();
if($user_query->count() > 0) {
$the_user = $user_query->first();
if($provider === 'facebook') {
$the_user->oauth_facebook_id = $user->id;
}
if($provider === 'twitter') {
$the_user->oauth_twitter_id = $user->id;
}
$the_user->avatar = $user->avatar;
$the_user->save();
\Auth::login($the_user, true);
return redirect('/');
}
$new_user = User::create([
'name' => $user->name,
'email' => $user->email,
'oauth_facebook_id' => $provider === 'facebook' ? $user->id : NULL,
'oauth_twitter_id' => $provider === 'twitter' ? $user->id : NULL,
'avatar' => $user->avatar
]);
\Auth::login($new_user, true);
return redirect('/');
希望这能帮助你理解如何去做。当然
我在一个网站上有FB和Twitter OAuth。我这样做的方法是将oauth\u facebook\u id
和oauth\u twitter\u id
列添加到users
表中(以及avatar
列,如果需要的话)
我将路由设置为/auth/{provider}
和/auth/{provider}/callback
,例如/auth/facebook
和/auth/facebook/callback
在我的AuthController
上的handleProviderCallback($provider)
方法中,我获取返回用户的详细信息,并检查他们是否已经存在于我的数据库中,以及他们的电子邮件、Facebook OAuth ID或Twitter OAuth ID。如果他们存在,我设置他们的电子邮件、OAuth ID和他们的化身,如果他们不存在,我创建他们。然后我把它们登录
$user = Socialite::driver($provider)->user();
$user_query = User::where('email', $user->email)
->orWhere('oauth_facebook_id', $user->id)
->orWhere('oauth_twitter_id', $user->id)
->get();
if($user_query->count() > 0) {
$the_user = $user_query->first();
if($provider === 'facebook') {
$the_user->oauth_facebook_id = $user->id;
}
if($provider === 'twitter') {
$the_user->oauth_twitter_id = $user->id;
}
$the_user->avatar = $user->avatar;
$the_user->save();
\Auth::login($the_user, true);
return redirect('/');
}
$new_user = User::create([
'name' => $user->name,
'email' => $user->email,
'oauth_facebook_id' => $provider === 'facebook' ? $user->id : NULL,
'oauth_twitter_id' => $provider === 'twitter' ? $user->id : NULL,
'avatar' => $user->avatar
]);
\Auth::login($new_user, true);
return redirect('/');
希望这能帮助您理解如何做。这是一条很好的信息,非常感谢。如果你想这么说,唯一的问题是,有人可能会在社交方面使用不同的电子邮件,而不是我的应用程序(我在几个网站上使用)。您认为有没有一种方法可以使用此代码在使用用户名和密码登录后启用链接帐户?这是一条很棒的信息,非常感谢。如果你想这么说,唯一的问题是,有人可能会在社交方面使用不同的电子邮件,而不是我的应用程序(我在几个网站上使用)。您认为有没有一种方法可以使用此代码在使用用户名和密码登录后启用链接帐户?