Код ASP.NET не может получить токен OAuth2, но PostMan можетC#

Место общения программистов C#
Ответить
Anonymous
 Код ASP.NET не может получить токен OAuth2, но PostMan может

Сообщение Anonymous »


У меня есть код, который я пытаюсь (по моему мнению) упростить, чтобы получить токен OAuth для запроса веб-API.

Я тестировал этот процесс в PostMan, первоначально устанавливая запрос токена аутентификации как часть вкладки «авторизация» основного запроса. Это прекрасно работает. Если я установлю запрос токена аутентификации как отдельный объект в PostMan, это тоже будет отлично работать.

Однако в C# он никогда не отвечает. У меня есть другой код, в котором тот же запрос работает нормально (другой сервис и т. д., но расположение кода такое же).

Код C#:

public static async Task GetAccessTokenAsync() { пытаться { используя (var client = новый HttpClient()) { client.BaseAddress = новый Uri(AuthTokenUrl); var request = новый FormUrlEncodedContent (новый словарь { ["grant_type"] = "client_credentials", ["client_id"] = AuthClientId, ["client_secret"] = AuthClientSecret, ["область"] = область аутентификации }); var resp = await client.PostAsync("", запрос); если (соответственно IsSuccessStatusCode) { var content = await resp.Content.ReadAsAsync(); вернуть контент.access_token; } Log.Error("Запрос токена API не удался. Код состояния: {code}; Причина: {reason}, {@request}", resp.StatusCode, resp.ReasonPhrase, request); вернуть ноль; } } поймать (Исключение ex) { Log.Error(например, «Ошибка при получении токена аутентификации для API.»); вернуть ноль; } } Почтальон:


Изображение


Рабочий пример C#:
public static async System.Threading.Tasks.Task GetOktaToken() { используя (var oktaClient = новый HttpClient()) { oktaClient.BaseAddress = новый Uri(AuthUrl); вар содержимое = новый FormUrlEncodedContent (новый [] { новая KeyValuePair("grant_type", "client_credentials") , new KeyValuePair("scope", "scope.read") , новая KeyValuePair("client_id", ClientId) , new KeyValuePair("client_secret", ClientSecret) }); var resp = ждут oktaClient.PostAsync(string.Empty, content); var oktaresp = await resp.Content.ReadAsAsync(); вернуть oktaresp.access_token; } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»