Как я могу получить Access_Token от Flurl

Я разрабатываю приложение, у меня есть бэкэнд-сервер Azure API Приложение, которое использует Owin Token Bearer, Я пытаюсь войти в свой бэкэнд и получить токен обратно, как в моем веб-клиенте. Я могу войти в систему успешно, но в ответном сообщении нет токена. У меня есть этот код

 string _url = ServerPath.Path + "/token";
 HttpResponseMessage message = await _url.PostUrlEncodedAsync(
     new {
         UserName = Username,
         Password = Password,
         grant_type = "password"
     }
);

Любая помощь будет высоко ценится.

1 ответ

Используемый метод аутентификации возвращает стандартный ответ токена OAuth 2.0. Токен находится в HttpResponseMessage ты возвращаешься, и Flurl's ReceiveJson может помочь вам вырвать это:

var response = await _url
    .PostUrlEncodedAsync(new
    {
        UserName = Username,
        Password = Password,
        grant_type = "password"
    })
    .ReceiveJson();

var token = (string)response.access_token;

Обратите внимание, что я использовал неуниверсальную версию ReceiveJson здесь, который возвращает dynamic, Вы можете сделать это немного более надежным, создав класс (назовите его TokenResponse) соответствуя структуре JSON всего тела ответа, используйте ReceiveJson<TokenResponse>()и иметь строго типизированный объект ответа, чтобы сорвать access_token снаружи.

Другие вопросы по тегам