«А вы не украдёте мой пароль от ВК?» - вопрос, который прилетает в поддержку каждую неделю. Понимаем тревогу: качать приложение от незнакомых разработчиков и вводить туда пароль от аккаунта с личной перепиской - звучит стрёмно. Хорошая новость: мы физически не можем увидеть твой пароль, даже если захотим. Объясняем, почему.
OAuth 2.0 - протокол, где пароль никогда не доходит до приложения
Когда ты жмёшь «Войти через ВК», MUZLOO открываетWebView с URL вида:
https://oauth.vk.com/authorize? client_id=4831307& scope=audio,offline& redirect_uri=vk4831307://auth& response_type=token
Этот URL ведёт на настоящий сервер vk.com, не на наш. Ты вводишь логин и пароль там, в браузерной странице ВКонтакте. MUZLOO в этот момент наблюдает только за URL-баром - ждёт, когда ВК сделает редирект с токеном (если вход прошёл) или с ошибкой (если не прошёл).
Пароль вводится в поле формы на vk.com. Поле принадлежит домену oauth.vk.com, защищённому TLS-сертификатом ВКонтакте. MUZLOO никак не может его прочитать - у WebView есть строгая изоляция: приложение не видит DOM чужого домена в режиме OAuth-авторизации.
Что мы реально получаем - токен, не пароль
После успешного логина ВК делает редирект на специальный URL (нашredirect_uri), куда в hash-части URL закодирован токен доступа:
vk4831307://auth#access_token=abc123def456... &expires_in=0 &user_id=123456789
Вот этот access_token - всё, что попадает в MUZLOO. Он даёт только те права, которые мы запросили (scope=audio - доступ к музыке, offline - возможность использовать токен без регулярного обновления). Прочитать переписку, писать посты на стене или подглядывать в друзей этим токеном физически невозможно - ВК выдаёт разрешения гранулярно.
Токен хранится локально на устройстве в зашифрованномEncryptedSharedPreferences (Android Keystore). На наш сервер он не уезжает - у нас нет backend'а, который хранил бы токены пользователей. Это проверяется на уровне манифеста приложения и сетевых логов.
Почему авторизация иногда «слетает»
Токен может перестать работать по нескольким причинам:
- Смена пароля на vk.com. ВК инвалидирует все существующие токены пользователя - это безопасный дефолт.
- Выход со всех устройств. В ВК есть кнопка «Завершить все сеансы» в настройках безопасности. После этого все токены всех сторонних приложений пересохраняются с нуля.
- Антифрод VK. Если с твоего аккаунта заметили подозрительную активность (заходы из разных стран, много запросов к API), ВК может временно заблокировать токен до прохождения капчи.
- VPN с другой страной. IP в США или Европе часто триггерит антифрод, особенно если до этого ты заходил только из России. Плюс на некоторых VPN-серверах API ВК отвечает медленно или с ошибкой CORS.
- Включили двухфакторку. Существующий токен остаётся валидным, но следующий логин потребует подтверждения через SMS/VK Notify.
Дополнительный вход - зачем он в MUZLOO
Иногда стандартный OAuth через WebView ломается по причинам, не зависящим от нас: пользователь поставил экзотический браузер по умолчанию, Android 14 сломал deep-link обработку на своей прошивке, ВК временно отключил OAuth для региона. На этот случай в MUZLOO есть «Дополнительный вход» - альтернативный метод через официальный VK SDK для Android.
VK SDK использует системный компонент Android вместо WebView, умеет общаться с установленным официальным приложением ВК напрямую (если оно есть на устройстве), и обходит часть проблем с браузером и deep-link'ами. По факту он работает в 9 случаях из 10, где основной OAuth падает.
Если видишь красное «Ошибка авторизации» на экране логина - просто нажми «Дополнительный вход» под основной кнопкой. Никаких дополнительных прав приложение не запрашивает - это тот же OAuth, но через другой механизм передачи токена.
Что делать, если ничего не работает
Порядок действий по степени «ядерности»:
- Выключить VPN. Всегда. Это главная причина в 60% случаев.
- Открыть
vk.comв браузере с того же телефона, залогиниться, убедиться что всё ок. - Попробовать «Дополнительный вход» в MUZLOO.
- Очистить данные приложения (Настройки Android → Приложения → MUZLOO → Хранилище → «Очистить данные»). Старый токен сгорит, можно логиниться заново.
- Проверить дату и время на телефоне - автоматические должны стоять. OAuth завязан на корректном timestamp в запросе, смещение даже на час ломает проверку подписи.
- Если всё мимо - открой раздел «Авторизация» в FAQ или пиши в поддержку, вместе разберёмся.
А как же взломы других приложений?
Периодически всплывают новости, что какой-то сторонний клиент ВК «слил пароли». В 100% таких случаев это приложения, которые просили логин и пароль в своей форме, а не через OAuth. Это называется credential harvesting - их авторы собственноручно нарушили базовый принцип OAuth, попросив пользователя ввести пароль у себя.
MUZLOO так не делает - у нас физически нет формы ввода пароля. Экран авторизации - это iframe-обёртка над vk.com, и ты вводишь пароль ровно там же, где ввёл бы его на сайте ВК в браузере. Если на экране логина ты видишь кастомную форму с логотипом MUZLOO - это значит, кто-то собрал поддельный APK (не с нашего сайта и не из Google Play), и его надо удалить.