如何通过远程代理进行facebook身份验证

时间:2012-03-14 12:16:34

标签: ruby facebook proxy sinatra

说我在http://example.com:4567有一个带有Sinatra REST API的应用程序。通过我的应用程序,我有一位设计师在前端工作。我没有用本地后端设置他,而是编辑他的主机文件,如下所示:

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创建一个vhost,映射到我们的前端repo所在的本地目录。这让我可以给他一个带有本地前端的远程后端。

子域名的原因是因为我们进行了Facebook身份验证,该身份验证具有针对身份验证的限制性域策略。我们可以成功地对用户进行身份验证并重定向回应用程序,但在尝试获取访问令牌时会收到400响应并显示以下消息:

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

我相信client_id已正确设置为在机架中设置:oauth:客户端对象正确,并且流程相同且仅在域不同时才会失败。我唯一的想法是,facebook可能不喜欢来自local.example.com的用户auth来自example.com请求访问令牌,但我的理解是facebook将在所有子域上进行身份验证。我还在我的应用程序中将local.example.com列入白名单。

有关如何实现这一目标的任何见解或建议?提前谢谢。

1 个答案:

答案 0 :(得分:0)

原来这不是域名问题,而是fb_graph,来自nov的开源fb api,默认情况下使用基本身份验证,当你获得访问令牌时,你需要将auth设置为“:basic”以外的东西为了解决这个错误。