18 Февраля 2025
10

Г. Мегион, ХМАО

ЛАПУШКА. КТО ТЕБЯ СОЗДАЛ ТАКУЮ...

Это щенок, девочка, Лапушка.

Семь килограмм любопытства, озорства и нежности)

Как все дети на свете любим игрушки и бегать.

С Лапушкой занимаются, в туалет мы ходим на улице, умеем приносить мячик, к кошкам равнодушны, а со всеми собаками хотим дружить.

Нам всего 7 месяцев, а мир пока огромный и прекрасный)

Тел. +7 982 148-96-83

Показать полностью 4
5

Казахстанские тенге

Казахстанские тенге

Товарищ, однажды раскрыл секрет, как проверить подлинность казахстанских тенге. Если взять кусочек сала и обвести этим кусочком по контуру купюры, то на подлинных купюрах изображение начинает возмущаться.

Показать полностью 1
2

Приложение СамСервис часть 2 и Аналог приложения TikTok, Vk видео и YouTube Shorts. Часть 3

Кому интересно:

Здесь я решил объединить эти темы, так как речь пойдет об одном и том же – интеграции авторизации через Яндекс.

Почему Яндекс?

Думаю, причина очевидна: СМС-авторизация – это дорого.
Разберем цифры:

  • Регистрация "имени" у операторов – 2000–2500 рублей за каждого. Учитывая, что у нас 4 основных оператора, только за это придется платить от 8000 рублей в месяц.

  • Каждое СМС в среднем стоит 2,5 рубля. Если в месяц приходит 1000 новых пользователей, это еще +2500 рублей.

  • А если добавить возможные злоупотребления, спам и другие проблемы – сумма растет.

Итого: 10 000+ рублей в месяц только за возможность отправки СМС. Такой вариант явно не лучший.

Что тогда выбрать?

Очевидный вариант – авторизация через сервисы. Рассматривал Google, но… санкции, ограничения, возможные блокировки – не вариант.
А так как приложение ориентировано на российскую аудиторию, выбор пал на Яндекс.

Проблема с Google Play

При проверке приложения Google требует, чтобы проверяющий мог войти. Но тестового аккаунта в Яндексе не существует.

Решение: временная кнопка для проверки, которая 21 февраля 2025 года станет невидимой.

Как сделать интеграцию?

  1. Зарегистрировать приложение в Яндекс.OAuth.

  2. Указать пакет приложения и отпечаток ключа (можно найти в ключе или Google Play).

  3. После авторизации Яндекс выдает токен, по которому можно получить номер телефона пользователя.

Но тут возникает проблема: если делать все в самом Android-приложении, это дыра в безопасности.

Как обойти ограничение?

Яндекс не дает получить токен через WebView, поэтому алгоритм такой:

  1. После авторизации приложение отправляет код на сервер.

  2. Сервер по коду получает токен.

  3. По токену сервер получает номер телефона.

Проблема с редиректом (ошибка 400)

После настройки сервера приложение начало выдавать ошибку 400 при редиректе.
Долго гуглил, но ответов не нашел.
Решение оказалось простым: нужно указать, что приложение – это не только Android-клиент, но и веб-сервис.

В параметре Redirect URI нужно указать URL контроллера сервера, который принимает код. После этого всё заработало!

Еще одна проблема – два токена!

После авторизации устройство получает токен. Но при попытке использовать его – ничего не работает.

  • В БД Android-приложения токен есть.

  • В БД на сервере токен другой.

Что?! Как так?

Оказалось, Яндекс отправляет два запроса с одним кодом.

  1. Первый запрос получает код, сервер генерирует токен A, отправляет его устройству.

  2. Следом Яндекс шлет второй запрос, сервер генерирует новый токен B.

  3. Устройство продолжает работать с токеном A, но в БД уже записан токен B.

Решение: добавил триггер, который блокирует повторную генерацию токена для одного кода. Теперь всё работает корректно.


Что с «Вжух»?

Работа над проектом не заброшена, но сервер не тянет нагрузку, нужен более мощный, а цены на хорошие сервера кусаются.

Итог

Интеграция с Яндексом удалась, проблем было много, но всё решаемо.
Спасибо за внимание! 🚀

Показать полностью 3
Мои подписки
Подписывайтесь на интересные вам теги, сообщества, авторов, волны постов — и читайте свои любимые темы в этой ленте.
Чтобы добавить подписку, нужно авторизоваться.

Отличная работа, все прочитано! Выберите