Почему я не могу пройти аутентификацию с помощью Microsoft Graph Explorer через настраиваемую веб-часть Sharepoint только в браузере Edge

Я развернул настраиваемую веб-часть на sharepoint online, в которой я проверяю подлинность с помощью Microsoft Graph Explorer.

Он успешно проходит аутентификацию через пользовательскую веб-часть Sharepoint в Chrome, IE и Firefox, но не аутентифицируется в Edge.

В Edge я получаю ошибку ниже:

description: "Invalid argument"
message: "Invalid argument"
number: -2147418113
stack: "TypeError: Invalid argument at Anonymous function (https://spoprod-a.akamaihd.net/files/sp-client-prod_2019-05-31.012/sp-pages-assembly_en-us_80b161431b1b8ce356b58dd5ab1df0cc.js:1178:42819)

введите здесь описание изображения

Это мой метод, в котором я обнаружил, что во время вызова API графического обозревателя Microsoft ("_ 2_") в Chrome, IE и Firefox API предоставляет ответ, но в Edge он переходит в перехват и выдает ошибку.

private _getListApplications(param): Promise<any> {
  return this.context.aadHttpClientFactory.getClient('https://graph.microsoft.com')
    .then((client: AadHttpClient) => {
     return client.get("https://graph.microsoft.com/beta/applications",AadHttpClient.configurations.v1);
     }).then((responseListAllApps: SPHttpClientResponse) => {
      return responseListAllApps.json();
     }).catch(err => { console.log('errr', err); });
  }

Любая помощь приветствуется.


person thevinaychoudhary    schedule 12.06.2019    source источник


Ответы (1)


Я задал тот же вопрос на sharepoint.stackexchange, я получил ответ, который мне подходит.

Похоже, что в бэкэнде есть какие-то изменения, из-за которых код вроде перестал работать в Edge и IE.

В качестве обходного пути на данный момент предлагаю вам явно установить значения заголовка.

Вам необходимо добавить приведенный ниже код для заголовков, не забудьте импортировать ISPHttpClientOptions из модуля @microsoft/sp-http:

let httpOptions: ISPHttpClientOptions = {
   headers: {
      "accept": "application/json",
      "content-type": "application/json"
   }
};

После этого ваш полный код будет следующим:

private _getListApplications(param): Promise<any> {

    let httpOptions: ISPHttpClientOptions = {
        headers: {
            "accept": "application/json",
            "content-type": "application/json"
        }
    };

  return this.context.aadHttpClientFactory.getClient('https://graph.microsoft.com')
  .then((client: AadHttpClient) => {
      return client.get("https://graph.microsoft.com/beta/applications",AadHttpClient.configurations.v1, httpOptions);
      }).then((responseListAllApps: SPHttpClientResponse) => {
         return responseListAllApps.json();
         }).catch(err => { console.log('errr', err); });
}
person thevinaychoudhary    schedule 17.06.2019