我在Rails 4應用程序中使用Devise 3.5和Omniauth。我創建了一個與Facebook的集成,允許用戶將他們的Facebook帳戶連接到我的應用程序。目前,當用戶點擊連接按鈕時,它們被髮送到/user/auth/facebook
,然後重定向到Omniauth生成的回調URL:/user/auth/facebook/callback
。我想在某些情況下手動覆蓋此回調網址 - 這意味着我不想在初始化程序中覆蓋它 - 具有完全合格的網址。例如,如果用戶從http://www.example.com/
開始,我可能想用http://app.example.com/user/auth/facebook/callback
覆蓋默認的回調網址。Devise/OmniAuth覆蓋默認回調網址
我的應用程序具有動態子域,用戶將(幾乎)始終開始子域上的身份驗證過程。不幸的是,Facebook似乎並不支持oauth重定向網址中的通配符,這就是爲什麼我希望能夠檢測用戶是否在子域上,並將回調網址調整爲我已在我的Facebook應用上列入白名單的內容,以便授權過程成功。
從我讀到的,url helper omniauth_authorize_path
接受附加參數作爲參數傳遞。我試圖通過一個定製的回調路徑像這樣,但沒有成功:
user_omniauth_authorize_path(:facebook, callback_path: @custom_callback)
我也試着改變callback_path
到redirect_url
和redirect_uri
,但似乎沒有任何工作。當我查看生成的鏈接時,確實將回調作爲參數包含在url中,但是當我單擊該鏈接時,我將重定向回默認回調url而不是自定義回調url。
我需要這個功能太:( – diogopms