Как правильно настроить приложение Azure для чтения / записи календаря? - PullRequest
0 голосов
/ 09 марта 2020

У меня проблемы с чтением и записью в мой календарь 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. Я могу читать мой профиль.

Любая помощь, высоко ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...