错误而获取用户信息与社会登录

问题描述:

我有这个功能的社交登录:错误而获取用户信息与社会登录

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领域,它给

InvalidStateExcep在AbstractProvider.php

我在做什么错在这里?我可以看到用户详细信息,如果我dd(Socialite::driver('facebook')->user()); in callback function.

+0

This [InvalidStateException in AbstractProvider.php](http://*.com/questions/29629287/laravel-5-geting-invalidstateexception-in-abstractprovider-php)似乎发生了一点点。它上面甚至还有一个[Laracast](https://laracasts.com/discuss/channels/laravel/socialite-invalidstateexception-in-abstractproviderphp)。这些资源是否有用? – WEBjuju

您应该在回调中获得用户信息(这是您看到该呼叫正在完成的文档中的唯一位置)。 Facebook正在通​​过数据(输入)将用户发送回该回调。 您所遇到的state部分是这些输入的一部分,并保存在会话中。当您拨打Socialite::driver('facebook')->user()时,它正在查看当前请求中的state输入,该输入不存在,因为您现在处于不同的请求中,因为您重定向了用户。

+0

那么除了回调函数之外,没有其他方式可以访问用户的详细信息吗? – Steve

+0

如果你稍后想要这些信息,你应该坚持下去。这个'user'方法需要一个具有特定输入的请求(它期望在回调中被调用),因为这是社交提供者在用数据验证之后发送用户的地方。 – lagbox