用Devise與Omniauth實作Facebook自定callback回傳
在測試OAuth登入的時候,新浪與Twitter都會原封不動的把原本傳過去的網址(包含Querystring)一起傳回到Callback網址上,可是Facebook不管怎樣就是辦不到,害我沒辦法讓Mobile Safari收到Callback後Redirect到指定的App去。
原本以為是Omniauth中我有參數沒設到,或者是Facebook設定不對,但是一直trace code卻什麼都沒發現,只好退而求其次,用別的方式去硬幹這部份。
我的作法是,先到 config/routes.rb
去硬刻一個route給Facebook這種不會把Querystring跟著弄回來的Providers用,所以如下
然後在App端這邊發送Request的時候就必須從 http://host/users/auth/facebook?url_identify=xxx
改成 http://host/users/auth/facebook/callback/xxx
了。
然後在 omniauth_callbacks_controller.rb
中手動加入 passthru
這個 action
這樣子在指定的provider action中就能正常吃到url_identify了。