Я работаю над надстройкой Outlook (в настоящее время тестируется в Интернете). Мне нужно получить несколько неизменяемых идентификаторов, чтобы я мог хранить ссылки на эти электронные письма на нашей платформе. Я прочитал отличный ответ от команды Outlook и получил весь день безуспешно пытался вызвать translateExchangeIds. Во-первых, я действительно не смог найти документ, в котором говорилось бы, что эта конечная точка действительно существует в API REST v2.0. Я могу сказать, что он действительно существует, потому что я получаю сообщения об ошибках, в которых говорится, что полезная нагрузка не соответствует тому, что конечная точка говорит, что ей нужно, если я просто немного изменю регистр json-объекта. В настоящее время я получаю сообщение об ошибке
code: "ErrorAccessDenied" message: "Access is denied. Check credentials and try again."
Кажется довольно очевидным, что я должен проверять свои права доступа. В документах, которые я могу найти, упоминается, что мне нужен User.ReadBasic. На самом деле это не то, как я бы определял разрешения для надстройки Outlook. В файле manifest.xml для моего добавления я определил разрешения
<Permissions>ReadWriteMailbox</Permissions>
Этого должно быть более чем достаточно для вызова этой конечной точки.
const getImmutableId = async () => new Promise<string>((resolve) => {
Office.context.mailbox.getCallbackTokenAsync(
{ isRest: true },
(result: Office.AsyncResult<string>) => {
const headers = new Headers();
headers.append('Authorization', `Bearer ${result.value}`);
headers.append('content-type', 'application/json');
headers.append('data-type', 'json');
headers.append('process-data', 'false');
fetch(`${Office.context.mailbox.restUrl}/v2.0/me/translateExchangeIds`, {
headers,
method: 'POST',
body: JSON.stringify({
InputIds: [
Office.context.mailbox.item.itemId,
],
SourceIdType: 'ewsId',
TargetIdType: 'restImmutableEntryId',
}),
}).then((response: Response) => {
if (response.ok) {
response.json().then((restResponse: {targetId: string, sourceId: string}[]) => {
resolve(restResponse[0].targetId);
});
} else {
// eslint-disable-next-line no-console
console.warn('there was a failire to get an immutable id falling back to mutable rest id');
resolve(Office.context.mailbox.convertToRestId(
Office.context.mailbox.item.itemId, Office.MailboxEnums.RestVersion.v2_0,
));
}
});
},
);
});
Любая помощь будет принята с благодарностью.