我正在设置omniauth(只是试图让facebook提供商暂时工作)。
我在我的本地计算机上运行端口80
上的nginx。我将所有请求路由到端口8080
并在8080
上运行默认的webrick服务器。
我已经建立了omniauth,但现在事情在某些情况下才会顺利进行。
如果我的浏览器点击http://localhost/auth/facebook
,我会收到错误消息:
URI::InvalidURIError, the scheme http does not accept registry part: app_server (or bad hostname?)
如果我点击http://localhost:8080/auth/facebook
,那么facebook会给我一条错误消息,例如Invalid redirect_uri: Given URL is not allowed by the Application configuration."
。这是有道理的,因为我的网站网址设置为http://localhost
而不是http://localhost:8080
。
如果我将网站网址更改为http://localhost:8080
,那么事情就会开始起作用(至少在授权过程中这一点)
顺便说一下,导致问题的不仅仅是localhost本身。如果我编辑/ etc / hosts并尝试dev.example.com
之类的内容,则其行为方式相同,dev.example.com
无法正常工作且dev.example.com:8080
正在运行。
为什么我不能仅使用localhost
来使用它? nginx和webrick互相交谈的方式有问题吗?我无法想象那会是问题所在,但这是我看到的有效和无效的唯一区别。有关URI错误发生的任何想法吗?
答案 0 :(得分:1)
您需要编辑Facebook应用程序的域名。进入https://developers.facebook.com/apps并编辑该应用程序的设置。将站点域和应用程序域设置为您希望允许重定向到的任何域(例如example.dev)