Не удается получить почту из MS Graph с помощью веб-части SPFX: ResourceNotFound - Ресурс не может быть обнаружен - PullRequest
0 голосов
/ 29 января 2019

Я работаю над веб-частью SPFX с ReactJS, которая выполняет некоторые сервисные вызовы MS Graph API REST для отображения пользовательских данных: отображаемого имени пользователя, почты пользователя, событий календаря пользователя и команд пользователя.Тем не менее, только вызов службы информации пользователя («/ me» в Graph) извлекает данные ... Другие вызовы показывают ошибку: «ResourceNotFound - Ресурс не может быть обнаружен», несмотря на то, что тот же вызов службы работает правильно, если я сделаю это с Graph Explorer.

В случае получения электронной почты ("/ me / messages") я тестирую пользователя, у которого есть учетная запись почты Office365 Exchange, но у него нет роли администратора в SP Tenant.Моя веб-часть имеет разрешения «Mail.Read» и «Mail.ReadWrite» (и другие, например, «User.Read.All» для чтения команд пользователя).Я тестирую в SP Workbench и развертываю свою веб-часть на странице в клиенте SP, утверждая все ожидающие разрешения в webApiPermissionManagement, но все еще не работает :(

Кроме того, на портале Azure моя веб-часть показывает, что она имеетделегированное разрешение «Чтение почты пользователя». Я не знаю, пропустил ли я здесь какую-либо конфигурацию, но я думаю, что я утвердил каждое разрешение, которое мог, с другим пользователем, имеющим роль администратора ...

Итак, яу меня два пользователя из разных организаций: у одного есть почтовый сервер Exchange O365 с разрешениями на сайте SP, но нет роли администратора, а другой - владелец SP Tenant, но не обменивающийся почтой (я не тестирую веб-часть с этим пользователем).

В моем коде вызов службы для получения списка почты:

  this.props.context.msGraphClientFactory.getClient().then(
    function(client: MSGraphClient) {
      client
      .api("me/messages")
      .version("v1.0")
      .select("receivedDateTime,from,subject")
      .filter("isDraft eq false")
      .orderby("receivedDateTime DESC")
      .get((error, response) => {
        if(error) {
          console.error(error.message);
          return;
        }
        MailHelper.GetMailsFromResponse(response); //Custom helper in order to format successful response
      });
    }
  );

(я видел, как позвонить клиенту Graph здесь: https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-msgraph#use-the-msgraphclient-in-your-solution)

Как я уже говорил,когда я звоню в сервисный вызов «/ me / messages», я получаю сообщение об ошибке 404: «ResourceNotFound - Ресурс не может быть обнаружен» вместо списка писем ... но если использовать Graph Explorer,это работает отлично.Я думаю, что я мог пропустить некоторые настройки разрешений, но я не знаю, какая именно.Я пробовал с различными учебными пособиями Microsoft по поводу подключения Graph и SPFX, но ни один не работает для меня.Любая идея?Я немного отчаялся.

...