Facebook需要一个website URL,该网站是用来验证Oauth请求的。Facebook还需要有效的callback URLs,基本上是Facebook可以安全地传递Oauth令牌的URL列表。
这里有我的本地环境和我的cloud9环境的区别,关于Facebook设置:
Localhost
http://localhost:3000http://localhost:3000/auth/facebook/callbackCloud9
http://myapp-cireficc.c9.io/http://myapp-cireficc.c9.io/auth/facebook/callback我的本地主机设置工作得很好。然而,当我在cloud9上运行我的应用程序时,我从Facebook得到以下错误:
应用程序配置不允许给定URL :应用程序的设置不允许一个或多个给定URL。它必须匹配网站URL或画布URL,或者该域必须是应用程序的某个域的子域。
这意味着这两个参数中的一个是错误的..。经过一些调试之后,Facebook似乎正在尝试访问这个回调URL:
redirect_uri=http%3A%2F%2Fmyapp-cireficc.c9.io%3A80%2Fauth%2Ffacebook%2Fcallback
在将其解码为更具可读性的字符之后,我们有:
http://myapp-cireficc.c9.io:80/auth/facebook/callback
它看起来像是一个随机的:80被添加到回调URL中,这让我认为当Oauth请求被发送出去时,它被附加了,而Facebook只是把它忠实地附加到响应回调,这现在是不正确的了。由于要添加:80,因此预期的回调和实际的回调不同:
预期:http://myapp-cireficc.c9.io/auth/facebook/callback
实际:http://myapp-cireficc.c9.io:80/auth/facebook/callback
在我看来,这似乎是cloud9在发送请求时添加的东西(可能是因为它们的域名是如何设置的?)我能做些什么让Facebook Oauth在cloud9上工作呢?
Note:Cloud9 9的env.PORT是8080,env.IP是0.0.0.0。这似乎是回调中的:80的来源,但我不知道如何绕过这个问题。
有趣的是,我在Heroku上设置了我的分期环境,Heroku没有这个问题。通过使用http://myapp-staging.herokuapp.com和正确的回调URL,我可以轻松地访问Facebook。
发布于 2015-10-25 03:01:05
同样的问题是:将端口(:80)添加到cloud9 url中,然后将其添加到有效的OAuth重定向URI中。
发布于 2017-07-20 18:07:42
@AnthonyGrove的回答对我没有用。
但是,将端口(:8080)添加到cloud9 url中,然后将其添加到有效的OAuth重定向URI中。
来自文档:Please note that 8080, 8081, and 8082 are the only available ports on a hosted Cloud9 workspace.
https://stackoverflow.com/questions/33133166
复制相似问题