У меня есть одна функция, которая получает токен 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?