用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了。

Comments

comments powered by Disqus