Outlook JS 加载项 + Outlook REST API
Outlook JS Add-In + Outlook REST API
我希望我的 Outlook 365 集成同时使用 Outlook JS 加载项 API 和 Outlook REST API。
但在我看来,它有单独的 permission/credential 处理:
- Outlook 加载项 API 具有以下权限:受限、ReadItem、ReadWriteItem 或 ReadWriteMailbox
- Outlook REST API 具有完整的 OAuth2 支持范围,例如
offline_access
我最感兴趣的范围。
我不想使用 Outlook 加载项为用户提供额外的 UI 元素,并使用 Outlook REST API 使我的数据与 Outlook 数据保持同步。
是否可以不强制用户同意两次?这首先是在安装时同意加载项,然后同意我们使用 Outlook REST API 进行同步作业的应用程序。
据我所知,现在不要求最终用户完成第二个基于 OAUTH 的身份验证流程是不可能的。
请注意,如果您需要访问 Office.js
未提供的数据,则可以在没有辅助身份验证流程的情况下使用 EWS(Exchange Web 服务,不是 REST)
看看 getUserIdentityTokenAsync
或 makeEwsRequestAsync
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.
}
});
我希望我的 Outlook 365 集成同时使用 Outlook JS 加载项 API 和 Outlook REST API。
但在我看来,它有单独的 permission/credential 处理:
- Outlook 加载项 API 具有以下权限:受限、ReadItem、ReadWriteItem 或 ReadWriteMailbox
- Outlook REST API 具有完整的 OAuth2 支持范围,例如
offline_access
我最感兴趣的范围。
我不想使用 Outlook 加载项为用户提供额外的 UI 元素,并使用 Outlook REST API 使我的数据与 Outlook 数据保持同步。
是否可以不强制用户同意两次?这首先是在安装时同意加载项,然后同意我们使用 Outlook REST API 进行同步作业的应用程序。
据我所知,现在不要求最终用户完成第二个基于 OAUTH 的身份验证流程是不可能的。
请注意,如果您需要访问 Office.js
未提供的数据,则可以在没有辅助身份验证流程的情况下使用 EWS(Exchange Web 服务,不是 REST)看看 getUserIdentityTokenAsync
或 makeEwsRequestAsync
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.
}
});