【发布时间】:2016-01-22 14:47:26
【问题描述】:
我希望我的网站能够进行 API 调用来替换使用 Facebook 进行身份验证的移动应用。用户会像登录应用程序一样使用 Facebook 登录,然后应用程序不会发送 API 调用,而是我的服务器会这样做。
如果我想为我的帐户发送请求,这很简单,我只需通过访问代表该应用生成一个身份验证令牌
facebook.com/dialog/oauth?client_id=app_id_here&redirect_uri=facebook.com/connect/login_success.html
并在响应的“位置”字段中找到访问令牌。
为了让我的网站能够做到这一点,我需要能够访问其他人生成的身份验证令牌,即打开一个带有类似 URL 的对话框
facebook.com/dialog/oauth?client_id=app_id_here&redirect_uri=my.website
这不起作用,因为应用程序配置为不允许它:
应用程序配置不允许给定 URL:应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域。
由于跨源策略,我也无法在客户端执行此操作:
XMLHttpRequest 无法加载 facebook.com/dialog/oauth?... 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'localhost:8000'。
除了允许跨源请求的 chrome 扩展之外,还有其他方法吗?
附:所有 https:// 都被故意编辑,因为没有足够的声誉。
【问题讨论】:
-
您所要做的就是修复您的应用程序设置,以便“...不允许给定 URL”消息消失。 (而且这个错误已经被讨论过无数次了——所以请做一些适当的研究。)//你当然不能通过 AJAX 调用登录对话框——它必须在顶部窗口实例中调用,以便用户可以验证通过地址栏知道他们不在网络钓鱼网站上。
-
这不是我的应用程序。我想我忘了说清楚。我想为第三方应用做一个网络客户端。
-
这是不可能的。