2013-12-13 57 views
0

我使用Omniauth在Facebook連接Rails應用程序。 Facebook身份驗證連接正確,但「狀態」參數 - 我應該能夠通過數據在回調中檢索數據 - 正在返回一個我無法解密的字符串。Facebook返回隨機字符串,而不是「狀態」參數

例如,通過授權 「/ AUTH/Facebook的?顯示彈出= &狀態= 19422」

結束返回的 「ecae4f444fb248944083db0623c9a86f3f75dff36006be7e」

的狀態下知道爲什麼發生這種情況?

回答

0

參數state不應該用於傳遞數據。該參數僅用於停止CSRF vulnerabilities。隨機生成的字符串正在後臺使用,以防止這些類型的攻擊。

您可以通過簡單地使用任何其他參數傳遞您的自定義數據。 OmniAuth已經足夠堅持在您的請求中發送任何額外的參數。的

因此,不是用

request_url?state=data 

傳遞數據,並得到它與

data = params[:state] 

您可以

request_url?whatever=data 

通過它,並把它

data = request.env['omniauth.params']['whatever'] 

而且您甚至可以省略請求並獲取數據:

data = env['omniauth.params']['whatever'] 
相關問題