1

我目前正在尝试使用 Microsoft Unified API 进行身份验证以检索数据。我跟随他们的深入研究,通过 Fiddler 中的连接,并通过它取得了成功。我现在正在尝试将其转换为代码以在测试网站上运行。

我必须通过以下代码创建对指定 URL 的 POST 请求:

var url = "https://login.microsoftonline.com/" + tenantId + "/oauth2/token";
var data = 'grant_type=authorization_code' +
        '&redirect_uri=http://localhost:61104/Views/Home.html' +
        '&client_id=' + clientId +
        '&client_secret=' + clientSecret + 
        '&resource=https://graph.microsoft.com' +
        '&code=' + oauthCode;

$.ajax({
        type: "POST",
        url: url,
        headers: {
            "Accept": "application/json",
            "Content-Type": "application/x-www-form-urlencoded"
        },
        data: data,
        success: function (a, b) {
            alert('success');
        },
        error: function (a, b, c) {
            alert('fail');
        }
    });

但是,这会触发错误功能,除了“错误代码 0”之外,响应没有给我任何信息。我尝试删除所有数据和标题并仅发布到 URL,但我再次收到错误代码 0。

我用谷歌搜索并确保它不是我的页面刷新或重新加载,它不是。我通过发布到另一个 REST 服务对此进行了测试,该服务运行良好。

这是我第一次使用 oAuth 并发布,所以我认为我在某个地方犯了一个新手错误。我错过了什么?谢谢。

编辑:添加,我尝试了一个最低要求,只有:

$.ajax({
        type: "POST",
        url: url
}

它仍然失败并出现错误 0。我在 Fiddler 中复制了这个,我得到了预期的响应(错误 400)。

4

1 回答 1

0

我通过添加解决了这个问题:

<system.webServer>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>

web.config文件。我还必须在 IE 设置中启用跨站点脚本。

于 2015-11-24T16:30:40.173 回答