我有一个网站,有一个表格。在表单中,我有一个链接到社交网站的按钮,用户可以点击它,它将从Facebook检索名称和电子邮件。然后,我将用户重定向回表单,以填写剩余信息或提交表单。
但是,返回页面后,所有其他信息都将丢失。
我试图在函数中传递'Request $ request'。但是,它实际上从未获取信息,因为按钮并未正确提交表单。
有没有办法确保先前的信息被推送到路由,然后该信息被推回到重定向?
到目前为止,这是我的代码:
web.php
Route::get('login/{service}', 'Auth\LoginController@redirectToProvider')->name('social');
Route::get('login/{service}/callback', 'Auth\LoginController@handleProviderCallback');
LoginController.php
public function handleProviderCallback(Request $request, $service)
{
$user = Socialite::driver($service)->stateless()->user();
return redirect()->back()
->with(['social' => 'social', 'name' => $user->name, 'email' => $user->email])
->withInput($request->all);
}
(注意:在视图中,我当然是使用{{ old('input_name') }}
在提交后表单失败时获取输入。)
有没有办法从Socialite获取信息并返回到表单而不会丢失以前的信息?
所有建议,帮助和评论都非常感谢:)
谢谢!!
问题是当用户被重定向到社交提供者时,比如facebook,表单数据将不在该请求中,所以当facebook重定向到回调时,你将无法在那里找到表单数据! (Facebook不会随身携带)
你可能需要在这里使用一些JavaScript。看看hellojs