0

我整合了omniauth-facebook寶石與devise。我註冊並登錄後,但我無法弄清楚如何將其他參數傳遞給RegistrationsController中的facebook回調方法,例如用戶開始註冊過程的url。如何通過Omniauth/Facebook登錄請求傳遞參數?

參數我包含在初始url(例如,localhost:3000/auth/facebook?url="url")不會傳遞到我的註冊控制器中的facebook方法。

ERB鏈接

<%= link_to "fb", facebook_omniauth_path(url: "url") %> 

路線

get 'auth/facebook', as: 'facebook_omniauth' 
get 'auth/facebook/callback' => 'registrations#facebook' 

控制器

def facebook 
    @user = User.from_omniauth(request.env["omniauth.auth"]) 
    if @user.persisted? 
     redirect_to root_path 
    else 
     session["devise.facebook_data"] = request.env["omniauth.auth"] 
     redirect_to new_user_registration_url 
    end 
    end 

有誰知道我可以在我的facebook方法中使用url參數嗎?

回答

2

默認情況下,omniauth.auth不顯示附加參數。您需要使用omniauth.params來代替url值,如下所示。

request.env["omniauth.params"]["url"] 
+0

有它!我可以問你在哪裏瞭解到這一點?在文檔中我找不到任何關於此的內容。 –

+1

它沒有正確記錄。我通過研究一些SO的答案來了解它。 – Pavan