Php 使用社交登录获取用户详细信息时出错
我拥有社交名流登录功能:Php 使用社交登录获取用户详细信息时出错,php,laravel,Php,Laravel,我拥有社交名流登录功能: public function login() { return Socialite::driver('facebook')->redirect(); } public function callback() { return redirect('/')->with('message','Logged in!!'); } 回调函数仅重定向到主页,其中有一个表单要添加,一首歌曲: public function add(Request
public function login()
{
return Socialite::driver('facebook')->redirect();
}
public function callback()
{
return redirect('/')->with('message','Logged in!!');
}
回调函数仅重定向到主页,其中有一个表单要添加,一首歌曲:
public function add(Request $request)
{
$newSong = new Song();
$newSong->name=$request->song;
$newSong->added_by=Socialite::driver('facebook')->user()->name;
$nrwSong->save();
}
但当我试图从这个社会认证中向数据库中添加added_by
字段时,它给出了
AbstractProvider.php中的InvalidStateException
我做错了什么?如果我
dd(Socialite::driver('facebook')->user()),我可以看到用户的详细信息;在回调函数中。
您应该在回调函数中获取用户信息(在文档中,只有在回调函数中,您才能看到正在进行的调用)。Facebook正在将用户发送回该回调,并提供数据(输入)。
您正在运行的
状态
部分是这些输入的一部分,也保存在会话中。当您调用Socialite::driver('facebook')->user()
时,它正在查找当前请求中的状态输入,该状态不存在,因为您重定向了用户,因此您现在收到了不同的请求。这似乎发生得很好。上面甚至还有一个字母。这些资源有用吗?除了回调函数之外,没有其他方法访问用户详细信息吗?如果您以后需要这些信息,您应该以某种方式将其持久化。该user
方法需要一个具有特定输入的请求(它期望在回调中被调用),因为在该请求中,社交提供商在对用户进行身份验证后向用户发送数据。