Перейти к содержанию

Импорт через Strava API (Android)

На Android Grom может импортировать недавние тренировки напрямую через Strava API, используя ваши credentials API-приложения Strava (bring-your-own / BYO). На сервер Grom ничего не сохраняется: Client ID, Client Secret и OAuth-токены остаются на устройстве. В веб-клиенте этот поток недоступен.

Для полной истории (или активностей старше окна синхронизации) используйте массовый импорт Strava (ZIP-архив).

Требования

  1. Аккаунт Strava с активной подпиской (Strava требует её для создания API-приложения).
  2. Создайте API-приложение на strava.com/settings/api.
  3. Скопируйте Client ID и Client Secret в Grom.

Если Connect падает с HTTP 403 на обмене токена, проверьте, что Client ID и Client Secret совпадают с API-приложением, и повторите попытку.

Новые приложения Strava стартуют в single-player режиме (авторизоваться может только владелец app) — это подходит для личного BYO.

Сценарий пользователя

  1. Откройте Интеграция → Внешние сервисы → Strava (только Android).
  2. Включите Импорт тренировок из Strava.
  3. Введите Client ID, Client Secret и при необходимости Тренировок за sync (по умолчанию 10, максимум 200).
  4. Нажмите Connect with Strava, выдайте scope activity:read и убедитесь, что статус OK.
  5. На Главной нажмите иконку синхронизации в app bar (как раньше у Health Sync).
  6. Grom покажет диалог «Синхронизация…», затем snackbar с числом импортированных тренировок (или что новых нет).

Выключение переключателя только прячет кнопку на Главной; credentials и токены остаются. Выход из Grom тоже их не очищает.

Правила синхронизации

Правило Поведение
Лимит До настраиваемого числа Тренировок за sync (по умолчанию 10, максимум 200) последних активностей
Порядок От новых к старым
Стоп На первой активности, уже есть в Grom с external_id.name=strava и тем же id
Видимость Только activity:read — Everyone / Followers (не «Only You»)
Метрики Дистанция, moving/elapsed time, скорости, высота, пульс, каденс, мощность и калории берутся из объекта активности Strava при наличии — не пересчитываются по треку
Streams Запрашиваются все типы streams Strava (time, latlng, distance, altitude, velocity_smooth, heartrate, cadence, watts, temp, moving, grade_smooth); отсутствующие игнорируются
Трек Всегда собирается FIT из streams, если есть хотя бы две полезные точки (сенсоры и/или GPS). Без валидного GPS position не пишется — indoor/силовые с пульсом всё равно получают трек. Пустые или полностью нулевые streams (например скорость) в FIT не пишутся, чтобы не создавать ненужные графики. Неполный GPS не подменяет метрики активности
Без streams Workout по summary без трека (avg/max HR, cadence, watts, calories всё равно отправляются, если Strava их отдаёт)
Устройство Берёт Strava device_name, если есть: пишется в FIT (product_name) и в поле create device (иначе дефолт сервера Grom App). В FIT не ставится manufacturer=development, поэтому тренировка не получает метку «Development»
Фото Best-effort через photos API; ошибка фото не валит workout
Снаряжение equipment_ids не передаётся → сервер берёт last_equipment_by_sport

Уже импортированные активности sync не обновляет (удалите и импортируйте снова, если нужен исправленный трек).

Дедуп совпадает с ZIP-импортом (strava + id активности Strava).

Конфиденциальность

Client secret и refresh-токены хранятся в настройках приложения на устройстве. Grom не отправляет их на ваш инстанс.