我们运行一个服务于多个顶级域的Web应用程序。我们目前正在尝试通过OAuth(Google,Facebook,Twitter)对用户进行身份验证。Muti level domain with Facebook App
我们遇到的最初问题是Google不支持访问多个顶级域名。为了解决这个问题,我们通过一个顶级域名代理流量,它只是作为一个中介,将请求转发给oAuth提供商,并将回调传递给我们不同的顶级域名。这一切都适用于谷歌,但不涉及到Facebook。
Facbook的操作有点不同,它会检查当前的网址是否为a)是否在应用程序域中? b)请求初始OAuth对话框时使用的重定向URI是否相同?
我们的流程就是这样。
请求允许 顶级域名 - >代理 - > Facebook的OAuth的
回调 的Facebook的OAuth - >代理 - >顶级域名
因为重定向URL被设置为代理服务器当用户允许权限时,我无法使用初始顶级域名从API获取任何信息。
产生的异常是:{“error”:{“message”:“验证验证码时出错,请确保您的redirect_uri与您在OAuth对话框请求中使用的相同”,“type”:“OAuthException “,”code“:100}}
任何人都有任何线索如何解决这个问题?
您还必须通过代理域进行访问令牌的代码交换。 – CBroe
这就是我卡住的地方。基本Facebook类使用当前的url(getCurrentUrl()),而不是为此重写的url。所以每当我尝试交换令牌的代码时,它都会使用我的顶级域名。然后抛出一个异常与域中的冲突。我可以改变基本的脸书功能,以适应我的喜好,但不知道这是否是正确的做法。 :p –