Php Laravel社交名流传递和检索自定义数据?
我目前正在向我的网站添加社交名媛,以允许用户从Facebook登录Php Laravel社交名流传递和检索自定义数据?,php,laravel,laravel-socialite,Php,Laravel,Laravel Socialite,我目前正在向我的网站添加社交名媛,以允许用户从Facebook登录 public function redirectToProviderFacebook() { return Socialite::driver('facebook')->redirect(); } public function handleProviderCallbackFacebook() { $userSocial = Socialite::driver('facebook')->user()
public function redirectToProviderFacebook() {
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallbackFacebook() {
$userSocial = Socialite::driver('facebook')->user();
$email = $userSocial->getEmail();
if (User::where('email', $email)->count() > 0) {
// log them in
Auth::login(User::where('email', $email)->first());
return redirect()->route('home')->with('info', "You are now signed in.");
} else {
// register an account and log them in
}
}
在正常的用户注册过程中,我要求三件事:用户名、电子邮件和密码。用户名和电子邮件是你在我的网站上永远无法更改的东西,因为它们的用户名与很多东西都有关联
使用Facebook登录的问题是,我必须在回调函数中注册新用户。因此,我不能问他们希望他们的用户名是什么
有没有办法提示用户输入他们的首选用户名?然后执行如下重定向:
return Socialite::driver('facebook')->with('username', $request->username)->redirect();
然后检索该数据,并将其用于回调函数中的身份验证注册?我不确定facebook,但对于github,它工作正常。试试这个:
public function socialLogin($loginFrom){
return Socialite::driver('github') >redirectUrl('http://your-domain.com/callback?data=123')->redirect();
}
在github应用程序上,您只需放置:
http://your-domain.com/callback
由于某些原因,可选参数对我不起作用,因此我最终使用会话将变量从重定向方法传递到回调方法。这不是最好的方法,但确实有效
public function redirectToFacebookProvider()
{
// save anything you will need later, for example an url to come back to
Session::put('url.intended', URL::previous());
return Socialite::driver('facebook')->redirect();
}
public function handleFacebookProviderCallback()
{
// handling....
$url = Session::get('url.intended', url('/'));
Session::forget('url.intended');
return redirect($url);
}
从……那里得到了这个答案
从开始,为什么不在使用表单进行身份验证后设置用户的用户名?我使用社交名媛的目的完全不同,我不是用它创建用户,而是用它作为线索。我有一个潜在客户表单,当用户通过linkedin或facebook点击注册时,它会获取信息并将其保存到潜在客户表中,通过您的方法我可以检索url,但我想传递用户id并检索handleProviderCallback方法。我不想通过url传递,因为我的url是维护的。如何传递用户id或可选参数,以便在handleProviderCallback方法上检索它们?