Вход из CLI: tv-sdk login
login — интерактивный способ аутентификации для CLI SDK. Вы один раз входите через браузер; после этого каждая команда sandbox аутентифицируется сама, из системного хранилища ключей — не нужно ни выпускать ключи, ни экспортировать переменные окружения.
npx @tv/extension-sdk loginCLI печатает короткий код подтверждения, открывает в браузере страницу входа платформы (или печатает URL, если открыть не удалось; --no-browser вовсе пропускает попытку) и ждёт. Вы входите под своей учётной записью разработчика, сверяете код на странице с кодом в терминале и подтверждаете. Терминальная сторона завершается сама:
Confirm this code in the browser: ABCD-EFGH
Opening your browser. If it did not open, visit:
https://auth.k8s.tangovision.dev/realms/developers/device?user_code=ABCD-EFGH
Waiting for approval… (Ctrl-C to abort)
✓ Logged in as dev@example.com
Credentials stored in the OS keyring.Это стандартный OAuth 2.0 device authorization flow — CLI никогда не видит ваш пароль, а токены никогда не печатаются в терминал.
Где хранятся учётные данные
Токены лежат в системном хранилище ключей вашей ОС: Keychain на macOS, Secret Service (libsecret) на десктопном Linux, Credential Manager на Windows.
Когда хранилище недоступно — например, headless-Linux без D-Bus secret service — CLI откатывается на файл ~/.config/tv-sdk/credentials.json с правами 0600 и предупреждает об этом в stderr. Бэкенд можно зафиксировать переменной TV_SDK_TOKEN_STORE:
| Значение | Поведение |
|---|---|
| (не задано) | Хранилище ключей, при недоступности — файл с предупреждением |
file | Всегда файл — правильный выбор для headless CI |
keyring | Хранилище ключей или ошибка — превращает тихий откат в жёсткий отказ |
Время жизни сессии и обновление
Access-токены короткоживущие (минуты); CLI обновляет их автоматически перед каждой командой, так что истечения вы не замечаете. Сама сессия живёт, пока не пролежит 30 дней без использования — поток запрашивает offline_access ровно для этого, чтобы сессия CLI не умирала вместе с 30-минутным SSO-таймаутом браузера.
Проверить, под кем вы вошли:
npx @tv/extension-sdk whoamiwhoami прогоняет всю цепочку — сохранённые учётные данные, автоматическое обновление и принятие результата реалмом — так что заодно служит проверкой здоровья сессии.
Выход
npx @tv/extension-sdk logoutlogout отзывает сессию на сервере (сохранённый refresh-токен мёртв, даже если где-то осталась резервная копия вашего хранилища ключей), а затем очищает локальное хранилище. Очистка происходит даже при недоступном реалме — выход никогда не оставляет токены за собой.
Вход или API-ключ?
Оба вида учётных данных работают с одним и тем же API песочниц, но служат разным вызывающим:
tv-sdk login | API-ключ (tvk_…) | |
|---|---|---|
| Для кого | Вы, интерактивно | CI и прочая неинтерактивная автоматизация |
| Как получить | Вход через браузер из CLI | Выпускается в портале разработчика |
| Где живёт | Системное хранилище ключей | Ваш secret store / секреты CI |
| Истекает | После 30 дней без использования | Срок задаётся при выпуске ключа |
Команды sandbox выбирают учётные данные в таком порядке: флаг --token=, затем переменная окружения TV_API_TOKEN, затем ваша сохранённая сессия входа. Так что шелл с экспортированным TV_API_TOKEN ведёт себя ровно как раньше — вход подхватывается лишь тогда, когда явных учётных данных нет.
Опции
| Флаг | Значение |
|---|---|
--no-browser | Не пытаться открыть браузер; просто напечатать URL и код |
--issuer=<url> | Входить в другой реалм (по умолчанию — реалм разработчиков) |
--client-id=<id> | Использовать другой OAuth-клиент (по умолчанию tv-sdk-cli) |
--format=json | Машиночитаемый вывод для скриптов |
Учётные записи сейчас создаются по приглашению — как устроен онбординг в превью, см. Учётная запись разработчика.