Php Laravel社交名流传递和检索自定义数据?

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()

我目前正在向我的网站添加社交名媛,以允许用户从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();

然后检索该数据,并将其用于回调函数中的身份验证注册?

我不确定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方法上检索它们?