Ошибка передачи заголовков в Invoke-RestMethod - PullRequest
0 голосов
/ 27 марта 2020

У меня есть одна функция, которая получает токен OAuth 2 и собирает заголовок; и другие, которые используют заголовок для выполнения различных запросов к Microsoft Graph.

Функция, которая собирает заголовок, имеет два метода: один интерактивный с потоком кода устройства; а другой не является интерактивным с потоком имени пользователя и пароля. Оба метода создают заголовок, который выглядит одинаково. Объект токена и объект заголовка являются одними и теми же типами объектов в обоих случаях.

Но, когда заголовок используется в другой функции GET, функция завершается ошибкой в ​​интерактивном случае и успешно в неинтерактивном случае , Ошибка: «Не удается преобразовать« System.Object [] »в тип« System.Collections.IDictionary », требуемый параметром« Заголовки »."

Объект, возвращаемый функцией заголовка, представляет собой массив (объект , базовый тип: системный массив) в случае неудачи. В успешном случае это хеш-таблица (hashtable, base type: system object). Хотя внутри функции токен и заголовок имеют один и тот же тип. Токен - System.Management.Automation.PSCustomObject, а заголовок - хеш-таблица.

Код, который собирает заголовок: $authHeader = @{ 'Authorization' = "Bearer $( $tokenResponse.access_token)" 'Content-Type' = "application/json" 'ExpiresOn' = $( $tokenResponse.expires_in)

Обе токены доступа - это длинные строки, содержащиеся в ответе токена. , Они кажутся похожими, и оба декодируют OK в jwt.io.

Есть идеи, почему два заголовка, которые выглядят одинаково, будут разными типами объектов, и как перевести ошибочный заголовок в формат IDictionary?

1 Ответ

0 голосов
/ 28 марта 2020

Нашел это. Подсказка для ввода в интерактивной аутентификации добавила пустую строку к выводу. Решением было добавить | Out-Null к приглашению.

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