以下代码在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浏览器拒绝尝试。我相信这就是为什么:
要求必须有针对性的方案同样托管页面
此限制意味着,如果你的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选项。其他人有没有其他想法?
我认为这可能是你的问题,现在我正在寻找更密切的:http://stackoverflow.com/questions/5087549/access-denied-to-jquery-script-on-ie – 2012-04-08 02:28:12
这还没有'工作,我会更新我的问题的理由。 – 2012-04-08 22:35:10
你看过JSONP吗?这超出了我的经验范围,但这看起来像另一种可能性:http:// stackoverflow。com/questions/4669781/howto-get-jsonp-and-facebook-graph-api-to-work – 2012-04-09 03:19:37