Ruby 如何通过远程代理进行facebook身份验证
假设我有一个带有Sinatra REST API的应用程序。在我的应用程序中,我有一个设计师在前端工作。我没有为他设置本地后端,而是按如下方式编辑他的主机文件:Ruby 如何通过远程代理进行facebook身份验证,ruby,facebook,proxy,sinatra,Ruby,Facebook,Proxy,Sinatra,假设我有一个带有Sinatra REST API的应用程序。在我的应用程序中,我有一个设计师在前端工作。我没有为他设置本地后端,而是按如下方式编辑他的主机文件: 127.0.0.1 local.example.com ProxyPass /api http://example.com:4567 ProxyPassReverse /api http://example.com:4567 以及他的httpd-vhosts.conf,如下所示: 127.0.0.1 lo
127.0.0.1 local.example.com
ProxyPass /api http://example.com:4567
ProxyPassReverse /api http://example.com:4567
以及他的httpd-vhosts.conf,如下所示:
127.0.0.1 local.example.com
ProxyPass /api http://example.com:4567
ProxyPassReverse /api http://example.com:4567
因此,API调用被代理到远程主机。然后,我在apache中为local.example.com创建一个vhost,该vhost映射到我们前端repo所在的本地目录。这使我可以给他一个远程后端和一个本地前端
之所以使用子域,是因为我们使用Facebook身份验证,它对auth有限制性的域策略。我们可以成功地在facebook上验证用户并将其重定向回应用程序,但在尝试获取访问令牌时,会收到400条响应,其中包含以下消息:
{"error"=>{"message"=>"Missing client_id parameter.", "type"=>"OAuthException", "code"=>101}}
我相信client_id的设置是正确的,因为它是在rack:oauth:client对象中正确设置的,并且流程是相同的,只有当域不同时才会失败。我唯一的想法是facebook可能不喜欢用户从local.example.com进行身份验证,而访问令牌是从example.com请求的,但我的理解是facebook将在所有子域上进行身份验证。我还将local.example.com列入了我的应用程序的白名单
对如何实现这一目标有何见解或建议?提前感谢。事实证明这不是域问题,而是来自nov的开源fb api fb_graph默认使用基本身份验证,您需要在获取访问令牌时将身份验证设置为除:basic之外的其他值才能解决此错误