2016-12-02 120 views
1

我有這個功能的社交登錄:錯誤而獲取用戶信息與社會登錄

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://stackoverflow.com/questions/29629287/laravel-5-geting-invalidstateexception-in-abstractprovider-php)似乎發生了一點點。它上面甚至還有一個[Laracast](https://laracasts.com/discuss/channels/laravel/socialite-invalidstateexception-in-abstractproviderphp)。這些資源是否有用? – WEBjuju

回答

1

您應該在回調中獲得用戶信息(這是您看到該呼叫正在完成的文檔中的唯一位置)。 Facebook正在通​​過數據(輸入)將用戶發送回該回調。 您所遇到的state部分是這些輸入的一部分,並保存在會話中。當您撥打Socialite::driver('facebook')->user()時,它正在查看當前請求中的state輸入,該輸入不存在,因爲您現在處於不同的請求中,因爲您重定向了用戶。

+0

那麼除了回調函數之外,沒有其他方式可以訪問用戶的詳細信息嗎? – Steve

+0

如果你稍後想要這些信息,你應該堅持下去。這個'user'方法需要一個具有特定輸入的請求(它期望在回調中被調用),因爲這是社交提供者在用數據驗證之後發送用戶的地方。 – lagbox

相關問題