У меня проблемы с чтением и записью в мой календарь Microsoft Outlook через график API. Я использую MSAL. js в веб-интерфейсе для аутентификации, и это работает нормально. Но я получаю этот ответ при попытке прочитать календарь:
"error": {"code": "ResourceNotFound", "message": "Не удалось обнаружить ресурс.", "InnerError": {" request-id ":" 5107df54-a0dd-46b c -b848-7c08545f7ddb "," date ":" 2020-03-09T16: 27: 20 "}}}
Это вызов соответствующего графа code:
var graphConfig = {
graphMeEndpoint: "https://graph.microsoft.com/v1.0/me",
graphMeCalEndpoint: "https://graph.microsoft.com/v1.0/me/calendar/events"
};
var requestObj = {scopes: ["user.read","Calendars.ReadWrite"]};
function acquireTokenPopupAndCallMSGraphCal() {
myMSALObj.acquireTokenSilent(requestObj).then(function (tokenResponse) {
curraccesstoken = tokenResponse.accessToken;
callMSGraphGetCal(graphConfig.graphMeCalEndpoint, tokenResponse.accessToken, graphAPICalCallback);
}).catch(function (error) {
console.log(error);
if (requiresInteraction(error.errorCode)) {
myMSALObj.acquireTokenPopup(requestObj).then(function (tokenResponse) {
curraccesstoken = tokenresponse.accessToken;
callMSGraphGetCal(graphConfig.graphMeCalEndpoint, tokenResponse.accessToken, graphAPICalCallback);
}).catch(function (error) {
console.log(error);
});
}
});
}
function callMSGraphGetCal(theUrl, accessToken, callback) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200){
callback(JSON.parse(this.responseText));
}
else{
callback(JSON.parse(this.responseText));
}
}
xmlHttp.open("GET", theUrl, true); // true for asynchronous
xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xmlHttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlHttp.send();
}
На стороне Azure я делегировал User.Read и Calendars.ReadWrite как разрешения API.
Я не уверен, нужно ли предоставлять API (через Expose API в портале). Примечание. У меня нет проблем с User.Read. Я могу читать мой профиль.
Любая помощь, высоко ценится!