Outlook JS 加载项 + Outlook REST API

Outlook JS Add-In + Outlook REST API

我希望我的 Outlook 365 集成同时使用 Outlook JS 加载项 API 和 Outlook REST API。

但在我看来,它有单独的 permission/credential 处理:

我不想使用 Outlook 加载项为用户提供额外的 UI 元素,并使用 Outlook REST API 使我的数据与 Outlook 数据保持同步。

是否可以不强制用户同意两次?这首先是在安装时同意加载项,然后同意我们使用 Outlook REST API 进行同步作业的应用程序。

据我所知,现在不要求最终用户完成第二个基于 OAUTH 的身份验证流程是不可能的。

请注意,如果您需要访问 Office.js

未提供的数据,则可以在没有辅助身份验证流程的情况下使用 EWS(Exchange Web 服务,不是 REST)

看看 getUserIdentityTokenAsyncmakeEwsRequestAsync here

您不需要第二个身份验证流程,您可以使用 Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) ... 获取访问令牌,然后您可以使用日历 REST API 例如使用 JQuery/Ajax。

您可以使用 Office.js,您可以从中获取令牌,令牌用于执行 ajax 调用。我在这里举个例子

var _mailbox = Office.context.mailbox;
_mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
    if (result.status === Office.AsyncResultStatus.Succeeded) {
       var  accessToken = result.value;

         var userDetail;
     var url = Office.context.mailbox.restUrl+ "/v2.0/me";
   try {
    $.ajax({
        type: 'GET',
        url: url,
        contentType: "application/json",
        headers: { 'Authorization': 'Bearer ' + accessToken },
        async: false,
        success: function (data) {
            userDetail = data;
        },
        error: function (textStatus, errorThrown) {

            userDetail = null;//doesnt goes here
        }

    });
}
catch (error)
{
    userDetail = null;
    writeLog(error);
}
  }
  }

以上代码提供了当前用户的详细信息,包括名字、电子邮件地址等等,您可以执行其他一些操作,例如创建文件夹、移动电子邮件、删除电子邮件等等

您可以使用
从您的 outlook JS 插件中获取 Outlook REST API 的访问令牌 Office.context.mailbox.getCallbackTokenAsync方法如下

Office.context.mailbox.getCallbackTokenAsync({isRest: true}, function(result){
  if (result.status === "succeeded") {
    var accessToken = result.value;

    // Use the access token.
    getCurrentItem(accessToken);
  } else {
    // Handle the error.
  }
});

来源:Get an access token