Facebook SDK


#1

先附上我使用的 Demo 教學檔

我的網域名稱是 shabao.tw , 在 "有效的 Oauth重新導向 URI, 一直設定不好
Demo中他的設定是callback_url: "http://localhost:3000/users/auth/facebook/callback"
如果我改成 "http://shabao.tw/users/auth/facebook/callback"
就會一直卡住,一直等待到最後沒反應,

想請各位前輩指導我怎麼設定好這個 URI,謝謝


#2

槽點有點多,我慢慢說給你聽哩,你拍的臉書的圖的網址內,首先

你開 https 所以對方會用 https 來和你換 SSL 的 key,但我猜你開的是 http 的 dev mode?光是這邊就沒辦法連到了, Rails 不會得到任何資訊,因為 SSL 換 key 就失誤了,所以把 Rails deploy 到有 SSL 支援(通常會透過 nginx proxy)或是把臉書的 https 拿掉

再來,為何是 tw/.auth/login 而非 tw/auth/login ?

anyway 把這些都修光了就會正常才是


#3

確實是 http 沒錯,而不是https,還有在demo教學檔裡面,路徑應該要設成
http://我的網址/users/auth/facebook/callback

我也照做了,
http://shabao.tw/users/auth/fackebook/callback

是可以登入了,可是都入之後,像是臉書登入之後,可以發文之類的功能,點下去就變這樣
,還是有問題,應該是我腳本沒寫好還是怎樣 … ,amazon ec2 的 error.log也沒顯示

cat /opt/nginx/logs/error.log 指令打了也沒顯示 @_@

我的網站是 Shabao.tw ,有機會和JC前輩約個時間當面討教指導嗎


#4

在 cat /opt/nginx/logs/error.log,找到這一段,是我沒辦法全部弄好的原因嗎

ERROR – omniauth: (facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected


#5

如果是的話,我不知道怎麼解決說 …


#6

hmm~ 我不確定你是怎樣寫的,不過 CSRF token 的問題其實很簡單 … 新手教學內也都有說明的

一般 post 都會希望配 session 回傳 CSRF token,否則使用者可以用它站攻擊,類似 A / B / C / D 站都發 post 去攻擊 E 站,如果使用者在 E 站有 cookie 有登入狀態,則 E 站可能會被攻擊成功,該 post 會有效 ( 因為 cookie 會帶回 )

所以後來都會多帶一個亂碼的 token 來做來源驗證,然而這是預設手段,你可以關掉的,類似你在 controller 下一段

skip_before_action :verify_authenticity_token , :only => [:action_name]

即可,也就是略過 CSRF 驗證就好了,你試試看唄

不過就我對 omniauth 的了解,他預設應該有幫你做才是,還是你繼承之類的寫錯了?