Г. Мегион, ХМАО
ЛАПУШКА. КТО ТЕБЯ СОЗДАЛ ТАКУЮ...
Это щенок, девочка, Лапушка.
Семь килограмм любопытства, озорства и нежности)
Как все дети на свете любим игрушки и бегать.
С Лапушкой занимаются, в туалет мы ходим на улице, умеем приносить мячик, к кошкам равнодушны, а со всеми собаками хотим дружить.
Нам всего 7 месяцев, а мир пока огромный и прекрасный)
Тел. +7 982 148-96-83
Казахстанские тенге
Товарищ, однажды раскрыл секрет, как проверить подлинность казахстанских тенге. Если взять кусочек сала и обвести этим кусочком по контуру купюры, то на подлинных купюрах изображение начинает возмущаться.
Приложение СамСервис часть 2 и Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 3
Кому интересно:
Здесь я решил объединить эти темы, так как речь пойдет об одном и том же – интеграции авторизации через Яндекс.
Почему Яндекс?
Думаю, причина очевидна: СМС-авторизация – это дорого.
Разберем цифры:
Регистрация "имени" у операторов – 2000–2500 рублей за каждого. Учитывая, что у нас 4 основных оператора, только за это придется платить от 8000 рублей в месяц.
Каждое СМС в среднем стоит 2,5 рубля. Если в месяц приходит 1000 новых пользователей, это еще +2500 рублей.
А если добавить возможные злоупотребления, спам и другие проблемы – сумма растет.
Итого: 10 000+ рублей в месяц только за возможность отправки СМС. Такой вариант явно не лучший.
Что тогда выбрать?
Очевидный вариант – авторизация через сервисы. Рассматривал Google, но… санкции, ограничения, возможные блокировки – не вариант.
А так как приложение ориентировано на российскую аудиторию, выбор пал на Яндекс.
Проблема с Google Play
При проверке приложения Google требует, чтобы проверяющий мог войти. Но тестового аккаунта в Яндексе не существует.
Решение: временная кнопка для проверки, которая 21 февраля 2025 года станет невидимой.
Как сделать интеграцию?
Зарегистрировать приложение в Яндекс.OAuth.
Указать пакет приложения и отпечаток ключа (можно найти в ключе или Google Play).
После авторизации Яндекс выдает токен, по которому можно получить номер телефона пользователя.
Но тут возникает проблема: если делать все в самом Android-приложении, это дыра в безопасности.
Как обойти ограничение?
Яндекс не дает получить токен через WebView, поэтому алгоритм такой:
После авторизации приложение отправляет код на сервер.
Сервер по коду получает токен.
По токену сервер получает номер телефона.
Проблема с редиректом (ошибка 400)
После настройки сервера приложение начало выдавать ошибку 400 при редиректе.
Долго гуглил, но ответов не нашел.
Решение оказалось простым: нужно указать, что приложение – это не только Android-клиент, но и веб-сервис.
В параметре Redirect URI нужно указать URL контроллера сервера, который принимает код. После этого всё заработало!
Еще одна проблема – два токена!
После авторизации устройство получает токен. Но при попытке использовать его – ничего не работает.
В БД Android-приложения токен есть.
В БД на сервере токен другой.
Что?! Как так?
Оказалось, Яндекс отправляет два запроса с одним кодом.
Первый запрос получает код, сервер генерирует токен A, отправляет его устройству.
Следом Яндекс шлет второй запрос, сервер генерирует новый токен B.
Устройство продолжает работать с токеном A, но в БД уже записан токен B.
Решение: добавил триггер, который блокирует повторную генерацию токена для одного кода. Теперь всё работает корректно.
Что с «Вжух»?
Работа над проектом не заброшена, но сервер не тянет нагрузку, нужен более мощный, а цены на хорошие сервера кусаются.
Итог
Интеграция с Яндексом удалась, проблем было много, но всё решаемо.
Спасибо за внимание! 🚀
















