Office Outlook加载项OAuth错误

时间:2016-05-30 09:13:01

标签: rest oauth outlook office365

我目前正在开发Office Outlook应用程序。 我正在尝试获取消息(特别是消息的附件) 来自Exchange Server。 我正在使用Outlook桌面应用程序。

我已经获得了 bearer 身份验证令牌,而我正在尝试使用 Office REST-API 来获取邮件,但如果我发送了邮件,则会出现一个奇怪的错误GET请求到服务器。

错误: “您尝试访问的API不支持项目范围的OAuth。

这是我的JavaScript代码:

        Office.context.mailbox.getCallbackTokenAsync(function (asyncResult) {
        if (asyncResult.status === "succeeded") {
            var authToken = asyncResult.value;
            var attUrl = 'https://outlook.office.com/api/v2.0/me/mailfolders/inbox/messages/';
            $.ajax({
                method: "GET",
                url: attUrl,
                beforeSend: function (request) {
                    request.setRequestHeader("Accept", "text/*, application/xml, application/json; odata.metadata=none");
                    request.setRequestHeader("Authorization", "Bearer " + authToken);
                    request.setRequestHeader("X-AnchorMailbox", "test@test.de");
                },
                success: function (responseData) {
                    console.log("success", responseData);
                },
                error: function (errData) {
                    console.log("err", errData);
                }
            });
        }
    });

我正在扫描传出流量,似乎一切正常:

获取outlook.office.com/api/v2.0/me/mailfolders/inbox/messages/ HTTP / 1.1

授权:Bearer TokenIsCorrect

接受:text / *,application / xml,application / json; odata.metadata =无

X-AnchorMailbox:test@test.de

Referer:localhost:44300 / AddInRead / App / Index / Index.html

接受语言:de-DE

原产地:localhost:44300

Accept-Encoding:gzip,deflate

User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; Trident / 7.0; rv:11.0),如Gecko

主持人:outlook.office.com

DNT:1

连接:Keep-Alive

缓存控制:无缓存

.................

我指的是: Outlook Mail REST-API参考

和样品上 Outlook开发人员中心OAuth Sandbox

我想我在互联网上搜索,但找不到任何东西 解决这个问题。

希望有人可以给我正确的提示。

BTW:必须删除一些因我的帐户没有声誉的链接:/

谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了问题,我能够解决它。

如果您调用REST-API的 Office.context.mailbox.getCallbackTokenAsync 函数,则Access-Token和您获得的令牌之间存在差异。 我可以看到,使用我自己的帐户登录Outlook开发中心OAuth Sandbox,获取令牌并将此令牌与我在VS中使用getCallbackTokenAsync获得的令牌进行比较。

他们是不同的。 该功能的令牌仅用于获取附件或项目。 在这种情况下,我想" items"是消息,我可以用该令牌开始请求所有消息,但是错误。 您必须从函数中获取令牌并直接使用 https://outlook.office.com/api/v2.0/me/mailfolders/inbox/messages/' + idMail +' / attachments /' + mail.attachments [i] .id;

祝你好运