我遵循了这个文件 https://docs.microsoft.com/en-us/outlook/add-ins/use-rest-api,并在rest api call上收到错误:
{"error":{"code":"RequestBroker-ParseUri","message":"Resource not found for the segment 'messages'."}}
令牌和邮件ID具有正确的值,代码来自文档,我唯一替换的是Office.context.mailbox.restUrl
默认https://outlook.office.com
,因为第一个对我来说是空的(为什么?)
实际上是代码:
function getItemRestId() {
// Currently the only Outlook Mobile version that supports add-ins
// is Outlook for iOS.
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
);
}
}
function getCurrentItem(accessToken) {
var itemId = getItemRestId();
var getMessageUrl = 'https://outlook.office.com' +
'/api/v2.0/messages/' + itemId;
$.ajax({
url: getMessageUrl,
dataType: 'json',
headers: { 'Authorization': 'Bearer ' + accessToken }
}).done(function(item){
var subject = item.Subject;
}).fail(function(error){
// log error is here
});
}
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
}
});
我做错了什么?你认为这是因为我取代了restUrl
价值吗?我使用自定义域名电子邮件。
感谢您的时间!
答案 0 :(得分:1)
由于您没有从restUrl属性获取值,我怀疑您使用的是本地Exchange Server。这是一个带有本地安装的known issue。这也是使用https://outlook.office.com
无效的原因(您的服务器不在该URI处)。
您可以使用Hybrid Deployment配置解决此问题。这允许您对本地服务器执行Microsoft Graph API调用。也就是说,我没有尝试过这个所以它可能无法在这种情况下工作。鉴于所有这些组件(1.5和混合)都在预览中,应始终预期出现意外结果。
答案 1 :(得分:1)
我遇到了同样的问题。
我用过
var getMessageUrl = 'https://outlook.office.com/api/v2.0/me/messages/'+ itemId+"/attachments";
而不是url:
var getMessageUrl = 'https://outlook.office.com/api/v2.0/messages/' + itemId;
使用第一个API后,API会给出正确的响应。