Outlook 在 REST 调用中添加:Request Broker-ParseUri -- "Resource not found for the segment 'messages'."
Outllok add in REST call: RequestBroker-ParseUri -- "Resource not found for the segment 'messages'."
我关注了这个文档
https://docs.microsoft.com/en-us/outlook/add-ins/use-rest-api,并在休息时收到错误 api 调用:
{"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
值吗?我确实使用自定义域电子邮件。
感谢您的宝贵时间!
由于您没有从 restUrl 属性 获取值,我怀疑您使用的是本地 Exchange 服务器。这是带有本地安装的 known issue。这也是使用 https://outlook.office.com
不起作用的原因(您的服务器不在该 URI 中)。
您可以使用 Hybrid Deployment 配置来解决这个问题。这允许您对本地服务器执行 Microsoft Graph API 调用。也就是说,我 没有尝试过这个 所以它在这种情况下可能不起作用。鉴于所有这些组件(1.5 和 Hybrid)都处于预览状态,因此应该始终预料到意想不到的结果。
我遇到了同样的问题。
我用过
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 后给出正确的响应。
我关注了这个文档 https://docs.microsoft.com/en-us/outlook/add-ins/use-rest-api,并在休息时收到错误 api 调用:
{"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
值吗?我确实使用自定义域电子邮件。
感谢您的宝贵时间!
由于您没有从 restUrl 属性 获取值,我怀疑您使用的是本地 Exchange 服务器。这是带有本地安装的 known issue。这也是使用 https://outlook.office.com
不起作用的原因(您的服务器不在该 URI 中)。
您可以使用 Hybrid Deployment 配置来解决这个问题。这允许您对本地服务器执行 Microsoft Graph API 调用。也就是说,我 没有尝试过这个 所以它在这种情况下可能不起作用。鉴于所有这些组件(1.5 和 Hybrid)都处于预览状态,因此应该始终预料到意想不到的结果。
我遇到了同样的问题。
我用过
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 后给出正确的响应。