2015-07-09 4 views
0

Я новый пользователь в stackoverflow, а также в офисе 365 с использованием node.js.Office 365 «Создать событие» Rest API дает ошибку

Я успешно получаю пользователя (мой собственный офис 365 счета) письма, события календаря с помощью этого учебника (https://dev.outlook.com/RestGettingStarted/Tutorial/node)

, но когда я пытаюсь создать событие в моем календаре это дает мне ниже ошибки «{ «error»: {«code»: «ErrorAccessDenied», «message»: «Доступ запрещен. Проверьте учетные данные и повторите попытку. "}}"

Пожалуйста, предоставьте мне предложения на том же самом.

Ниже приведен код для создания события, которое я скопирован из [https://msdn.microsoft.com/office/office365/APi/calendar-rest-operations#CreateEvents] здесь

function createEvent(response, request) { 
var cookieName = 'node-tutorial-token'; 
    var cookie = request.headers.cookie; 
// if (cookie && cookie.indexOf(cookieName) !== -1) { 
     console.log("Cookie: ", cookie); 
     // Found our token, extract it from the cookie value 
     var start = cookie.indexOf(cookieName) + cookieName.length + 1; 
     var end = cookie.indexOf(';', start); 
     end = end === -1 ? cookie.length : end; 
     var token = cookie.substring(start, end); 
     console.log("Token found in cookie: " + token); 

var event = new outlook.Microsoft.OutlookServices.Event(); 
event.subject = 'Your Subject'; 
event.start = new Date("October 30, 2014 11:13:00").toISOString(); 
event.end = new Date("October 30, 2014 12:13:00").toISOString(); 

// Body 
event.body = new outlook.Microsoft.OutlookServices.ItemBody(); 
event.body.content = 'Body Content'; 
event.body.contentType = outlook.Microsoft.OutlookServices.BodyType.Text; 

// Location 
event.location = new outlook.Microsoft.OutlookServices.Location(); 
event.location.displayName = 'Location'; 

// Attendee 
var attendee1 = new outlook.Microsoft.OutlookServices.Attendee(); 
var emailAddress1 = new outlook.Microsoft.OutlookServices.EmailAddress(); 
emailAddress1.name = "abc"; 
emailAddress1.address = "[email protected]"; 

attendee1.emailAddress = emailAddress1; 

event.attendees.push(attendee1); 
var outlookClient = new outlook.Microsoft.OutlookServices.Client('https://outlook.office365.com/api/v1.0', 
     authHelper.getAccessTokenFn(token)); 

outlookClient.me.calendar.events.addEvent(event) 
    .then(function (response) { 
    console.log(response._Id); 
}, function (error) { 
     console.log(error); 

});

}

+1

Добро пожаловать в SO. Пожалуйста, покажите код. –

+0

Вы запросили разрешение calendar.readwrite для своего приложения? –

+0

@UweAllner Я обновил свой вопрос с кодом. – rkp

ответ

1

Убедитесь, что ваше приложение запросило разрешения calendar.readwrite и вам это нужно, чтобы создать новые события. В приведенном ниже примере ваше приложение зарегистрировалось только для разрешений Calendar.Read (см. Ниже). Your app requested Calendar.Read permission

Вы должны вместо этого перейти на https://dev.outlook.com/AppRegistration, чтобы зарегистрировать приложение с разрешением Calendar.ReadWrite, которое требуется для создания новых событий. Request Calendar.ReadWrite permission

+0

Он работает сейчас! Большое спасибо @Venkat. У меня есть еще один вопрос относительно создания события, поскольку, используя вышеприведенный код, я могу создать событие в своем собственном офисе 365, но я хочу создать событие для учетной записи другого пользователя в моей организации, можете ли вы предложить мне, какие шаги мне нужны брать. – rkp

+0

Доступ к календарям других пользователей еще не поддерживается с использованием API REST, но мы работаем над добавлением этой поддержки. У меня нет графика для этого. –

+0

Okay @Venkat Ayyadevara - MSFT, Другие API REST - это любой способ создания событий в учетной записи 365 другого пользователя в той же организации, что и в этой статье [blogs.msdn.com/b/exchangedev/archive/2015/01/ 21/... и как-то это соответствует моему требованию, можете ли вы предложить мне об этом. – rkp

Смежные вопросы