以下代码适用于Chrome,Firefox和Komodo Dragon。我甚至是一个干净的firefox安装(证明我没有经过FB或其他任何认证)。它在IE中不起作用。 Chrome,FF和Dragon都会生成带有有效access_token的警报。 IE导致“访问被拒绝”。我尝试过GET和POST,两者都有相同的结果。
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中收到Access Denied。我相信这就是原因:
请求必须定位到与托管页面相同的方案
此限制意味着如果您的AJAX页面位于 http://example.com,那么您的目标网址也必须以HTTP开头。 同样,如果您的AJAX页面位于https://example.com,那么您的 目标网址也必须以HTTPS开头。
绝对是我们阻止HTTPS页面制作的意图 基于HTTP的资源的XDomainRequests,如该场景所示 混合内容安全威胁,许多开发人员和大多数用户都这样做 不明白。
但是,这种限制过于宽泛,因为它会阻止HTTP 发布针对HTTPS页面的XDomainRequests的页面。虽然它是 确实HTTP页面本身可能已被泄露,没有 因为应该禁止接收公共资源 安全
最糟糕的是,相同的方案限制意味着Web开发人员 使用file:// scheme在本地测试他们的页面会找到它 所有XDomainRequests都被阻止,因为file://不匹配 http://或https://,这是唯一有效的目标方案 (第1点)。要解决此问题,Web开发人员必须托管他们的 本地Web服务器上的页面(例如IIS,Visual Studio托管) 服务器等)。
要解决此限制,您可以构建一个 的postMessage-代理换XDR。
我提供的托管包不包含任何SSL选项。还有其他人有其他想法吗?
答案 0 :(得分:1)
答案是对服务器端服务进行ajax调用,然后让该服务进行OAuth调用。在我的例子中,我使用了asp.net ASMX服务。它也可以是PHP或任何东西。现在正在运作。