Господа архитекторы, есть такой вопрос.
Есть абстрактный сервис, который является некой прокладкой к другим сервисам. При этом, логика такова, что, без доступа к этим сторонним ресурсам, наше сервис ничего не может, ему нужно сначала получить данные со стороннего сервиса, а уже затем на их основе выполнять определенные задачи.
С применением oAuth протокола, процесс создания пользовательского аккаунта такого сервиса условно делится на 3 этапа(условно):
1) Хэндлер 1 получает запрос на создание аккаунта пользователя и отдает ссылку с client_id и redirect_uri.
2) Предоставление прав доступа к стороннему сервису пользователем
3) Хэндлер 2 нашего сервиса получает код авторизации и обменивает его на токен для доступа к стороннему сервису и заполнение аккаунта данными.
Но помимо сервисов, которые поддерживают только oAuth, есть и такие сервисы, которые дают api ключ, который нужно ручками вставить и пользоваться сразу.
Получается, что в случае с oAuth логика создания аккаунта размазывается на 2 этапа, в 2 разных местах программы. В случае же с api key все можно сделать одним запросом.
При этом, очень хотелось бы абстрагировать процесс создания разных типов аккаунтов и и сделать все процессы как можно более унифицированными, скрыть их реализацию за каким-то интерфейсом, условно в одном методе connect(), стоит ли и можно или это сделать и если да, то как бы вы сделали?