Я провел последние пару недель или около того, просматривая документы и руководства .Net Core, и сейчас я создаю свое первое веб-приложение .Net Core.Таким образом, приложение в основном состоит из извлечения данных из онлайн-API на основе параметров поиска.Ничего впечатляющего.Теперь моя проблема заключается в OAuth2, который API использует для ограничения доступа к своим данным.Я впервые сталкиваюсь с OAuth2 и работаю с удаленными API в целом, так что, как вы могли догадаться, я провел последние пару дней, просматривая документацию OAuth и изучая использование API.API, который я использую для извлечения данных, - это API-интерфейс Amadeus, а продолжительность выданного мне токена доступа составляет 30 минут.Поэтому после нескольких дней стука в голове и попытки обновить токен доступа всеми различными способами, я решил, что Amadeus даже не предоставляет обновленный токен, и мне следует в основном использовать ClientId и ClientSecret для обновления токена доступа, когда он истекает, иликогда это близко к истечению срока.Мое приложение не имеет никакой аутентификации пользователя и просто служит для получения данных от API.
Итак, мои вопросы:
1) Как лучше обновлять токен доступа, если вытолько что предоставил ClientId и ClientSecret?
2) Есть ли способ автоматизировать этот процесс, используя некоторые данные в памяти и не полагаясь на ответ 401, чтобы проверить, не истек ли мой токен?
Мое предположениепытался использовать Промежуточное программное обеспечение для исходящих запросов , чтобы попытаться получить доступ к конкретным данным запроса или данным, хранящимся в памяти, например, например, когда был сгенерирован последний токен доступа, и затем решить, следует ли мне обновить его или нет, перед отправкойзапрос.Моя проблема в том, что я не очень хорошо разбираюсь в этом, и я не уверен, смогу ли я получить доступ к своему экземпляру HttpClient внутри этого промежуточного программного обеспечения и обновить его токен с помощью метода HttpClient.SetBearerToken ().Я также пытался использовать HttpContext, но я не совсем уверен, как он работает за кулисами, и документация Microsoft, которую я нашел, довольно скудна.Таким образом, другой вопрос будет:
3) Могу ли я передать HttpContext пользовательскому промежуточному программному обеспечению, как в в этом случае , но использовать его для переопределения метода, подобного SendAsync (), а затем в сочетании с этим,основываясь на информации, которую я собираю, используйте HttpClient.SetBearerToken () в том же промежуточном программном обеспечении для обновления моего временного экземпляра HttpClient, который генерируется HttpClientFactory?
Любая помощь или совет очень важны!