javascript - Outlook Mac App 身份验证 token 不匹配

标签 javascript office-js office-addins outlook-web-addins outlook-for-mac

我正在为 Outlook 实现一个加载项,该加载项获取一个附件并将其发送到我的服务器进行处理。它在 https://outlook.office.com 上完美运行但无法运行 Outlook 2016 for Mac。

这是我尝试访问的 API:

var getMessageUrl =Office.context.mailbox.restUrl + '/v2.0/me/messages/' +
    {messageID} + "/attachments/" + {attachmentID};

var attachmentID = Office.context.mailbox.item.attachments[0].id;
var messageID = getItemRestId();

$.ajax({
    url: getMessageUrl,
    dataType: 'json',
    headers: {
        'Authorization': 'Bearer ' + outlookToken
    }
}).done(function 1(response) {
    //upload the blob to my server
}).fail(function (error) {
    //call authorise to get a new token
});

function getItemRestId() {
    if (Office.context.mailbox.diagnostics.hostName === 'OutlookIOS') {
        // itemId is already REST-formatted
        return Office.context.mailbox.item.itemId;
    } else {
        // Convert to an item ID for API v2.0
        return Office.context.mailbox.convertToRestId(
            Office.context.mailbox.item.itemId,
            Office.MailboxEnums.RestVersion.v2_0
        );
    }
}

使用 Outlook 2016 for Mac,我从上述 API 得到一个 401

此外,我在 Outlook 2016 for Mac 上通过调用 getCallbackTokenAsync 获得的 auth_token 与我在浏览器中获得的不同:

Office.context.mailbox.getCallbackTokenAsync({isRest: true}, function (result) {
    if (result.status === "succeeded") {
        //save result.value
    } 
    else {
        //error condition
    }
});

我的 list 中的值是:

<Set Name="MailBox" MinVersion="1.3"/>
<Permissions>ReadWriteMailbox</Permissions>

有人可以指出我在这里做错了什么吗?

更新 根据 Jason 的建议,我检查了我在 jwt.io 上收到的 token token 的版本在浏览器和 mac 应用程序上是不同的。

On the Browser: "ver": "Exchange.Callback.V2" On the Mac App: "ver": "Exchange.Callback.V1" 

如何让 outlook_mac_app 返回 token 的 v2?

最佳答案

我无法发表评论,所以将其发布为答案。

我在 Outlook for Mac 2016 中为附件打了 403,不确定它们是否相关,但您可以在这里查看 https://github.com/OfficeDev/outlook-add-in-command-demo/issues/30

关于javascript - Outlook Mac App 身份验证 token 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48561863/

相关文章:

javascript - 如何在vue2中的过滤列表中保留项目的引用

javascript - 来自 JavaScript 中的模数和私有(private)指数的 RSA 私钥

javascript - 复制对象文字的更美观的方式?

javascript - 通过 Word API 获取当前段落的样式/字体(字体大小、颜色等)

ms-office - Office 2016 共享按钮 IdMso

javascript - 如何创建一个包含另一个 Angular Cli 的 Angular Cli 应用程序?

javascript - 添加 office.js 在 url 中添加#,然后将其删除

javascript - StorageEvent 在 Office 加载项中如何工作?

angular - 使用 Angular 4 的 Outlook 插件

javascript - OutlookWeb 上 getCallbackTokenAsync 的 Office js Api 错误