Аутентификация файлов cookie API asp.net в настраиваемой функции

Как я могу получить данные из API asp.net, который использует аутентификацию файлов cookie внутри настраиваемой функции.

Я следовал примерам из https://docs.microsoft.com/en-us/office/dev/add-ins/excel/custom-functions-web-reqs. Я могу делать запросы, но fetch, похоже, не включает файлы cookie в последующие запросы. Похоже, что выборка была ослаблена в пользовательских функциях.

/**
 * @customfunction
 */
async function CalcbenchData(): Promise<number> {
  let batchURL = 'https://www.calcbench.com/api/NormalizedAPIBatch'
  let data = [{ "metric": "revenue", "ticker": "msft", "year": 2015, "period": 1, "datatype": 1 }]
  await login()
  return postData(batchURL, data)
}

/**
* the reponse from this function sets the ASP.net authentication token cookie
*/
async function login() {

  let email = encodeURIComponent('username')
  let password = encodeURIComponent('password')
  let url = `https://www.calcbench.com/account/LogOn?email=${email}&password=${password}`

  await fetch(url,{
    method: 'GET',
    mode: 'same-origin'
  });
}


function postData(url = '', data = {}): Promise<number> {
  return fetch(url, {
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'same-origin', // no-cors, cors, *same-origin

    headers: {
      'Content-Type': 'application/json',
    },

    redirect: 'follow', // manual, *follow, error
    referrer: 'no-referrer', // no-referrer, *client
    body: JSON.stringify(data), // body data type must match "Content-Type" header
  }).then(response => {
    return response.json()
  }).then(json => {
    return json.value
  }) // parses JSON response into native JavaScript objects 
}

25.07.2019 17:49:54 Подробная среда выполнения [Консоль] [Журнал] Неожиданные пользовательские функции [Выполнение] [Конец] [Ошибка] [RejectedPromise] Функция = CALCBENCHDATA Ошибка типа: сбой сетевого запроса {}


person andrewkittredge    schedule 25.07.2019    source источник


Ответы (1)


в настоящее время это невозможно со средой выполнения пользовательских функций в Windows (поскольку это отдельный процесс от диалогового окна аутентификации), но в настоящее время ведется активная разработка того, как мы это включаем. Просмотрите этот элемент на GitHub, чтобы узнать о предстоящих обновлениях: https://github.com/OfficeDev/Excel-Custom-Functions/issues/118. Скорее всего, мы обновим его через пару недель.

Спасибо

person Keyur Patel - MSFT    schedule 25.07.2019
comment
Поддерживает ли реализация выборки пользовательских функций файлы cookie в Интернете / на Mac? Вариант приведенного выше примера не работал в Excel в браузере. - person andrewkittredge; 26.07.2019
comment
Привет, еще нет. В настоящее время, несмотря на то, что в Интернете и Mac мы запускаем пользовательские функции внутри веб-представления, это отличается от веб-представления, в котором вы выполняете аутентификацию. В обновлении будет представлена ​​модель общего приложения, которая заставит функции и команды запускаться в тот же экземпляр веб-представления, что и панель задач (поэтому файл cookie будет доступен для общего доступа). - person Keyur Patel - MSFT; 07.08.2019