说我在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列入白名单。
有关如何实现这一目标的任何见解或建议?提前谢谢。
答案 0 :(得分:0)
原来这不是域名问题,而是fb_graph,来自nov的开源fb api,默认情况下使用基本身份验证,当你获得访问令牌时,你需要将auth设置为“:basic”以外的东西为了解决这个错误。