我们运行一个服务于多个顶级域的 Web 应用程序。我们目前正在尝试通过 OAuth(Google、Facebook、Twitter)对用户进行身份验证。
我们最初遇到的问题是 Google 不支持访问多个顶级域。为了解决这个问题,我们通过一个顶级域代理流量,它只是充当中介,将请求转发到 oAuth 提供者,并将回调转发到我们不同的顶级域。这一切都适用于谷歌,但对于 facebook 则不然。
Facbook 做了一些不同的事情,它检查您当前的 url 是否是 a) 在应用程序域中?b) 请求初始 OAuth 对话时使用的重定向 uri 是否相同?
我们的流程是这样的。
请求权限 顶级域 -> 代理 -> Facebook OAuth
回调 Facebook OAuth -> 代理 -> 顶级域
因为当用户允许权限时重定向 url 设置为代理 URL,所以我无法使用初始顶级域从 api 获取任何信息。
产生的异常是:{"error":{"message":"验证验证码时出错。请确保您的 redirect_uri 与您在 OAuth 对话请求中使用的相同","type":"OAuthException","code ":100}}
任何人都知道如何解决这个问题?