我目前正在将Socialite添加到我的网站,以允许用户从Facebook登录。
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();
然后检索该数据以在回调函数中使用它进行身份验证注册?
答案 0 :(得分:1)
由于某种原因,“可选参数”对我不起作用,因此我最终使用会话将变量从重定向方法传递给回调方法。这不是最好的方法,但是可以解决问题。
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);
}
从https://laracasts.com/discuss/channels/laravel/socialite-return-parameters-in-callback?page=0获得了答案
并且来自Sending additional parameters to callback uri in socialite package for laravel
答案 1 :(得分:0)
我不确定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