Привет!
Есть веб-сервис. Он предоставляет юзерам возможность войти через OAuth, а также в дальнейшем использовать некоторые сервисы для сбора данных. Возьмем для простоты 2 провайдера: Google и Яндекс.
1. При логине достаточно запросить доступ на чтение базовой информации (почта и тд). Это решается добавлением соответствующего scopes в запрос при получении access-токена.
2. Далее мы хотим подключиться к Яндекс.Метрике и Google.Analytics (или Яндекс.Диску и Google.Drive, не важно). И тут проблема - ведь мы не предусматривали такую необходимость при запросе токена.
На всякий случай уточню, что в п2 мы будем запрашивать offline-токены.
Варианты:
1. Использовать один и тот же токен для всех сервисов провайдера. В случае с Google это решается через
Incremental authorization, а вот Яндекс требует прописать ВСЕ потенциально требуемые доступы заранее в настройках приложения. Понятное дело, что посетителя может смутить обширный список доступов, запрашиваемых проектом во время регистрации.
2. Создавать отдельные приложения (т.е. пары clientId+clientSecret) под каждый сервис. Это должно меньше смущать пользователя (запрашиваем доступ только к тому, что реально нужно), но приводит к разрастанию сопровождаемых приложений. Хотя их число все равно будет не слишком большим и работа по сути разовая. Но ощущение костыля все равно остается.
А как вы решаете подобные проблемы?