我希望我的Outlook 365集成同时使用Outlook JS Add-In API和Outlook REST API。
但正如我所看到的,它具有单独的权限/凭证处理:
offline_access
范围。我不想使用Outlook加载项为用户提供额外的UI元素,并使用Outlook REST API使我的数据与Outlook数据保持同步。
是否可以在不强迫用户同意两次的情况下进行?首先,在安装加载项时同意加载项,然后同意我们的应用程序使用Outlook REST API进行同步作业。
答案 0 :(得分:1)
据我所知,现在不可能要求最终用户完成第二个基于OAUTH的身份验证流程。
请注意,如果您需要访问Office.js未提供的数据,则可以在没有辅助身份验证流的情况下使用EWS(Exchange Web服务,而不是REST)
查看getUserIdentityTokenAsync
或makeEwsRequestAsync
here。
答案 1 :(得分:0)
您不需要第二个Auth流,您可以使用Office.context.mailbox.getCallbackTokenAsync({isRest:true},function(result)...来获取访问令牌,然后您可以使用Calendar REST例如,使用JQuery / Ajax的API。
答案 2 :(得分:0)
您可以使用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);
}
}
}
以上代码提供当前用户详细信息,包括名字,电子邮件地址等等,您可以执行其他几项操作,如创建文件夹,移动电子邮件,删除电子邮件等等
答案 3 :(得分:0)
您可以使用
从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.
}
});