Список пользователей в арендаторе - PullRequest
0 голосов
/ 13 декабря 2018

var auth = require('./auth');
var graph = require('./graph');

// Get an access token for the app.
auth.getAccessToken().then(function (token) {
  // Get all of the users in the tenant.
  graph.getUsers(token)
    .then(function (users) {
      // Create an event on each user's calendar.
      graph.createEvent(token, users);
    }, function (error) {
      console.error('>>> Error getting users: ' + error);
    });
}, function (error) {
  console.error('>>> Error getting access token: ' + error);
});

Я использую этот образец Microsoft Graph Node.js .

Конечная цель состоит в том, чтобы иметь возможность составить список всех пользователей в организации / арендаторе и создать событие в каждом из их календарей.

В настоящее время я могу получить токен доступа (который оказался наиболее сложной частью), который указан в терминале в VSCode.Однако у меня возникают проблемы с доступом к пользователям в организации, и они также перечислены в терминале.У меня есть следующий URI https://graph.microsoft.com/v1.0/users?$select=id,displayName, который получает всех пользователей в моей организации в Microsoft Graph Explorer.Но использование этого же URI не работает в моем приложении.

У меня есть все необходимые разрешения, указанные в Azure, единственным препятствием является перечисление пользователей в организации.

Вот мой код, который должен ссылаться на пользователей в организации и соответственно создавать событие календаря.

var request = require('request');
var Q = require('q');

// The graph module object.
var graph = {};


// Make a request to get all users in the tenant/organization. 
graph.getUsers = function (token, users) {
  var deferred = Q.defer();

  request.get('https://graph.microsoft.com/v1.0/users?$select=id,displayName', {
    auth: {
      bearer: token,

    }
  }, function (err, response, body) {
      if (err) {
        console.log("error");
      } 

      else {
        let parsedBody = JSON.parse(body);

        if (parsedBody.error_description) {
          console.log("Error=" + parsedBody.error_description);
      }
        else {
          // The value of the body will be an array of all users.
          console.log("Users = " + parsedBody.value)
        }
      }

    });

  return deferred.promise;
};


//Creates an event on each user's calendar.
graph.createEvent = function (token, users) {
  var i;
  var startTime;
  var endTime;
  var newEvent;
  for (i = 0; i < users.length; i++) {
    // The new event will be 30 minutes and take place tomorrow at the current time.
    startTime = new Date();
    startTime.setDate(startTime.getDate() + 1);
    endTime = new Date(startTime.getTime() + 30 * 60000);

    // These are the fields of the new calendar event.
    newEvent = {
      Subject: 'Creating Event test',
      Location: {
        DisplayName: "Edison Ballroom"
      },
      Start: {
        DateTime: startTime,
        TimeZone: 'PST'
      },
      End: {
        DateTime: endTime,
        TimeZone: 'PST'
      },
      Body: {
        Content: 'This is a test for adding calendar events. Thanks!',
        ContentType: 'Text'
      }
    };

    // Add an event to the current user's calendar.
    request.post({
      url: 'https://graph.microsoft.com/v1.0/users/' + users[i].id + '/events',
      headers: {
        contenttype: 'application/json',
        authorization: 'Bearer ' + token,
        displayName: users[i].displayName
      },
      body: JSON.stringify(newEvent)
    }, function (err, response, body) {
      var parsedBody;
      var displayName;
      if (err) {
        console.error('>>> Application error: ' + err);
      } else {
        parsedBody = JSON.parse(body);
        displayName = response.request.headers.displayName;

        if (parsedBody.error) {
          if (parsedBody.error.code === 'RequestBroker-ParseUri') {
            console.error(
              '>>> Error creating an event for ' + displayName +
              '. Most likely due to this user having a MSA instead of an Office 365 account.'
            );
          } else {
            console.error(
              '>>> Error creating an event for ' + displayName + '.' + parsedBody.error.message
            );
          }
        } else {
          console.log('>>> Successfully created an event on ' + displayName + "'s calendar.");
        }
      }
    });
  }
};

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