Как получить метки «календарь» и «элементы календаря» с помощью Microsoft Graph REST API v1.0 - PullRequest
0 голосов
/ 01 октября 2018

Я разрабатываю надстройку для Outlook Web, используя Microsoft Graph REST API v1.0.После многих поисков включите документацию Microsoft и, наконец, сможете авторизоваться и получить «access_token» с помощью надстройки, но сильно застряли, чтобы получить «календарь» пользователя, а также «события календаря», включая повторяющиеся события с использованием приведенного ниже кода

 //// for all calendar label
 var _token="xyz..123";
 $.ajax({
    url: "https://graph.microsoft.com/v1.0/me/calendars",
    headers: {
        'outlook.body-content-type': 'text/html',
        'Authorization': 'Bearer ' + token
    },
    type: 'GET'
}).done(function (data) {
    //// success
}).fail(function (error) {
    //// error
});


//// for calendar events
var _token="xyz..123";
 $.ajax({
    url: "https://graph.microsoft.com/v1.0/me/calendar/events",
    headers: {
        'outlook.body-content-type': 'text/html',
        'Authorization': 'Bearer ' + token
    },
    type: 'GET'
}).done(function (data) {
    //// success
}).fail(function (error) {
    //// error
});

ref: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list_events

Я получаю эту ошибку в ответ

{
"error": {
    "code": "InvalidAuthenticationToken",
    "message": "CompactToken parsing failed with error code: 80049217",
    "innerError": {
        "request-id": "55ea48c0-5d10-423b-9f41-d48d5b1d9454",
        "date": "2018-10-01T14:41:05"
      }
   }
}

Пожалуйста, укажите мне, где я делаю неправильно?Спасибо

ОБНОВЛЕНИЕ

По предложению @Lina я попробовал этот метод и переключился на Outlook REST API v2.0

Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
    if (result.status === "succeeded") {
        var accessToken = result.value;
        // Use the access token
    } else {
        // Handle the error
    }
});

получил accessToken= "123..abc";После этого я попытался получить доступ к календарю и событиям таким образом

// get calendars
$.ajax({
    url: 'https://outlook.office.com/api/v2.0/me/calendars' ,
    dataType: 'json',
    headers: { 'Authorization':'Bearer ' +access_token}
  }).done(function (items) {
    //sucess;
  }).fail(function (error) {
    //error
});

// get events
$.ajax({
    url: 'https://outlook.office.com/api/v2.0/me/events' ,
    dataType: 'json',
    headers: { 'Authorization':'Bearer ' +access_token}
  }).done(function (items) {
    //sucess;
  }).fail(function (error) {
    //error
});

В вышеупомянутом запросе я получил эту ошибку

"{"error":{"code":"ErrorAccessDenied","message":"The api you are trying to access does not support item scoped OAuth."}}"

, связанную: Доступ к Outlook RestAPI изВеб-надстройка Outlook

Помогите мне, что мне не хватает.Есть ли какие-либо «разрешения» или «параметры»?Спасибо

1 Ответ

0 голосов
/ 02 октября 2018

Если вы используете метод getAccessTokenAsync для получения access_token, вы должны использовать запрос, показанный ниже:

Получить коллекцию событий серии master и single instance из основного календаря пользователя (../ me / events) или из другого календаря.Чтобы получить расширенные экземпляры события, вы можете получить представление календаря или получить экземпляры события.

GET https://outlook.office.com/api/v2.0/me/events
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/events

Для получения дополнительной информации, пожалуйста, перейдите по ссылке ниже:

ИспользованиеКалендарь REST API

...