2012-03-14 74 views
0

假設我在http://example.com:4567有一個使用Sinatra REST API的應用程序。有了我的應用程序,我有一位設計師在前端工作。而不是設置他與當地的後端我編輯了hosts文件如下:如何通過遠程代理執行Facebook身份驗證

127.0.0.1  local.example.com 

和他的httpd-vhosts.conf如下:

ProxyPass /api http://example.com:4567 
ProxyPassReverse /api http://example.com:4567 

使API調用代理到遠程主機。然後,我在apache中爲local.example.com創建一個虛擬主機,映射到他的本地目錄(我們的前端回購站點)。這使我能夠在本地前端爲他提供遠程後端。

該子域的原因是因爲我們進行Facebook身份驗證,它具有其用於身份驗證的限制性域策略。我們能夠成功的Facebook身份驗證用戶和重定向迴應用程序,但試圖獲得訪問令牌獲得400響應該消息時:

{"error"=>{"message"=>"Missing client_id parameter.", "type"=>"OAuthException", "code"=>101}} 

我相信,因爲它在我們設置的CLIENT_ID設置正確rack:oauth:客戶端對象正確,並且流程完全相同,只有域名不同時纔會失敗。我唯一的想法是,Facebook可能不喜歡來自local.example.com的用戶身份驗證,而訪問令牌是從example.com請求的,但我的理解是Facebook將在所有子域上進行身份驗證。我也在我的應用上將local.example.com列入了白名單。

任何有關如何完成此任務的見解或建議?提前致謝。

回答

0

原來,這不是一個域問題,而是來自nov的開源fb api fb_graph默認使用基本身份驗證,當您獲得訪問權限時,需要將auth設置爲除「:basic」以外的內容令牌來解決這個錯誤。