2012-04-08 208 views
3

以下代码在Chrome,Firefox和Komodo Dragon中正常工作。即使是一个干净的Firefox安装(证明我没有通过FB或任何其他认证)。它在IE中不起作用。 Chrome,FF和龙都会产生有效access_token的警报。 IE导致“访问被拒绝”。我试过GET和POST,两者都有相同的结果。ajax调用在Chrome浏览器,Firefox但不在IE浏览器?

function getWallPosts() { 
     $.ajax({ 
      url: 'https://graph.facebook.com/oauth/access_token?client_id=<facebookid>&client_secret=<secretcode>&grant_type=client_credentials', 
      type: 'POST', 
      success: function (data) { 
       alert(data) 
      }, 
      error: function (a, b, c) { 
       alert(a + ' ' + b + ' ' + c); 
      } 
     }); 
    }; 

编辑:附加信息*

我使用XDomainRequest作为意见建议,但是我仍然收到访问只有IE浏览器拒绝尝试。我相信这就是为什么:

http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

要求必须有针对性的方案同样托管页面

此限制意味着,如果你的AJAX页面是 http://example.com,那么你的目标网址也必须以HTTP开头。 同样,如果您的AJAX页面位于https://example.com,那么您的目标网址也必须以HTTPS开头。

这肯定是我们的意图,以避免使 XDomainRequests基于HTTP的资源HTTPS网页,该方案中提出了 混合内容安全威胁,许多开发者和用户最 不明白。

但是,此限制过于宽泛,因为它阻止HTTP 页面发出以HTTPS页面为目标的XDomainRequest。虽然 确实HTTP页面本身可能已被破坏,但没有其它原因应该被禁止安全地接收公共资源 。

最糟糕的是,相同的方案限制意味着,Web开发人员 测试他们的网页在本地使用file://模式会发现, 所有XDomainRequests的被阻止,因为文件://不匹配 是http ://或https://,这是唯一有效的目标方案 (点#1)。要解决此问题,Web开发人员必须将其页面 托管在本地Web服务器上(例如,IIS,托管的Visual Studio托管服务器等)。

要解决此限制,您可以构建一个 postMessage-Proxy-for-XDR。

我提供的托管软件包不包含任何SSL选项。其他人有没有其他想法?

+0

我认为这可能是你的问题,现在我正在寻找更密切的:http://stackoverflow.com/questions/5087549/access-denied-to-jquery-script-on-ie – 2012-04-08 02:28:12

+0

这还没有'工作,我会更新我的问题的理由。 – 2012-04-08 22:35:10

+0

你看过JSONP吗?这超出了我的经验范围,但这看起来像另一种可能性:http:// stackoverflow。com/questions/4669781/howto-get-jsonp-and-facebook-graph-api-to-work – 2012-04-09 03:19:37

回答

1

答案是让ajax调用服务器端服务,然后让该服务进行OAuth调用。就我而言,我使用了一个asp.net ASMX服务。它也可以是PHP或任何东西。这现在正在工作。

相关问题