Как сделать авторизацию на телефоне

Обновлено: 26.07.2024

Во-первых я понял что для логина в приложение андроид используется две библиотеки либо retrofit либо volley, я лично думаю что буду делать на retrofit так как по нем больше информации и видосов.

Во-вторых у меня возникла идея, а что если не использовать эти все библиотеки и просто сделать перегон данных с формы в json и отправки на сервер по запросу?? Ну это так чисто как вариант, я просто сильно в этом пока разбираюсь))

В-третьих, я прошерстил кучу сайтов и пересмотрел кучу гайдов, и во всех случаях каждый из разработчиков создает кучу классов для обычного логина, и вот у меня вопрос нужно ли создавать кучу классов или можно сделать все как-то более компактно. Просмотрев кучу сайтов у меня так и не получилось сделать логин, даже на локальной БД.

И вот у меня есть теперь заминка при разработке авторизации в приложении, может кто-то сможет мне на очень простом языке как сделать логин при помощи retrofit , а то я никак не могу понять.

И так согласно первому комментарию и вопросам которые в нем были заданы: у меня есть свой сервер со своим api а именно rest api. Авторизация будет производится путем ввода пароля и лоигна которые будут вытягиваться с формы и отсылаться на сервер для проверки если все введено правильно то переход на другое активити. Уже есть база пользователей которые будут логиниться. Авторизация по популярным соц. сетям пока не берется во внимание. Передача данных на сервер пока идет в формате json но потом вроде как планируется и передавать методом post. Других способов аутентификации я думаю в ближайшем будущем не будет. Бэкендом занимаюсь не я и мне уже дали тестовый пароль и логин, а так-же кучу всяких деталей по серверной части, типа запросов и основных ошибок.

Буду очень благодарен за советы и помощь.

1 ответ 1

буду делать на retrofit так как по нем больше информации и видосов

Не лучший ход мыслей.

во всех случаях каждый из разработчиков создает кучу классов для обычного логина

Но чаще пользуются Retrofit . Почему? Потому что он очень удобен.

Затем создаём интерфейс для работы с API:

Далее вам нужно десериализованный POJO для ответа от сервера написать, и всё:

Итого — у вас в коде пара строчек потрачено на логику по работе с сетью, и помимо этого ещё пара коротеньких файлов. Это я ещё не говорил про тестирование, DI и так далее.

Если к делу — о какой конкретно авторизации идёт речь? У вас свой API, или же вы хотите встроить авторизацию через популярные сервисы вроде VK , Google , Facebook и всё такое прочее?

В первом случае всё зависит от протоколов и способов аутентификации. Что вы используете: OAuth , накостыленная передача логинов и паролей прямо в теле запроса, Bearer -токены?

Во втором случае обычно используются SDK этих сервисов и вручную ничего не пишут. Но иногда (как например в случае с VK ), готовые SDK крайне убогие или не обновлялись много лет и приходится писать вручную — тогда чаще всего одними запросами вы не отделаетесь, вам придется юзера самого заставить тыкать на кнопочки, предоставленные сервисом, и скорее всего через WebView .

Если же всё-таки вы всё делаете вручную, и бэкенд тоже ваш, тогда логика тоже довольно проста — в случае с Retrofit — создаёте интерфейс (вроде написанного выше MyExampleApi ), помещаете туда методы с нужными сигнатурами, и выстраиваете свою логику. Юзер вводит пароль, или вы как-то сами его получаете, — вместе с логином шифруете его как-нибудь, или просто так отправляете в теле запроса — делаете обычный запрос с нужными заголовками, телом или query , и на основе ответа от сервера решаете, залогинился юзер или нет.

В общих словах всё выглядит просто. Ваш вопрос довольно развёрнутый, но не содержит конкретики — мой ответ тоже развёрнут и содержит всю необходимую информацию и даже сравнение. Больше конкретики по самой авторизации я не могу на данный момент написать, потому что конкретика вопроса не позволяет.

UPD:

Передача данных на сервер пока идет в формате json но потом вроде как планируется и передавать методом post.

А как вы планируете json передавать не через POST , в query как параметр при GET -запросе? Есть некоторые случаи такой логики, например при подписи запросов, но я сомневаюсь, что у вас это используется, а значит вам нужен именно POST -запрос.

Инициализация выглядит также. Интерфейс будет примерно такой:

Вот ваше тело запроса:

Оно будет автоматически сериализовано в JSON с помощью GSON:

Допустим, вот ваш JSON-ответ от сервера:

Тогда ваш десериализованный класс может выглядеть так:

Это будет сделано автоматически GSON -ом, т.к. вы добавили GsonConverterFactory в билдере при инициализации ретрофита.

Допустим, из ваших двух EditText по нажатию на кнопку вы получаете логин и пароль юзера:

Тело запроса сформировано. Теперь проинициализируем интерфейс для работы с API:

И теперь обрабатываем ответ:

Вот, собственно, и вся логика.

Ваше тело запроса AuthRequestBody будет сериализовано в JSON, почитайте про то, как это работает, в частности про библиотеку GSON.

В этом уроке мы продолжим увеличивать свои способности в настройке пользовательского интерфейса своих приложений и оборудовать их все более серьезными вещами. На этот раз мы оснастим свое Android приложение функцией входа в приложение по вводу логина и пароля. Это может пригодится для многих приложений, да и просто интересно, как это делается. Все довольно просто, ничего сложного в реализации этой возможности не будет.

Здесь пригодится вспомнить простенький урок о переходе между двумя экранами, этот прием встречался уже неоднократно, поэтому разъяснений по нему делать уже не буду.

Создаем новый проект, выбираем Blank Activity. Для начала создадим пользовательский интерфейс для приложения. Он будет состоять из полей ввода логина/пароля и кнопки для совершения входа. Открываем файл activity_main.xml и добавляем туда следующее:

Мы получили вот такой вид пользовательского интерфейса:

Видок андроид приложения

Сразу разберемся со вторым экраном, на который будет совершаться переход в случае успешного ввода логина и пароля. Создаем новый класс по имени Second.java:

И соответствующий ему layout файл по имени second_activity.xml:

Кстати, не забудьте добавить вторую activity в файл манифеста AndroidManifest.xml:

Проверяем работоспособность своего творения:

успешный вход и переход на второй экран
что то пошло не так

Полный провал входа через логин и пароль

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

Авторизация по СМС - это лучший способ убедиться в том, что Ваши пользователи указали существующий номер телефона.

Авторизация по СМС - это простой способ убедиться в том, что Ваши пользователи:

  1. Являются реальными людьми, а не роботами;
  2. Используют существующий номер телефона;
  3. Застрахованы от несанкционированного доступа к их аккаунту или личному кабинету.

Авторизация по СМС решает несколько конкретных задач:

  1. Верификация введенных пользователем данных (= введенный телефон существует);
  2. Устранение дублирующихся регистраций/аккаунтов (один номер телефона = один аккаунт);
  3. Привязка аккаунта/личного кабинета к мобильному телефону пользователя;
  4. Повышение безопасности операций;
  5. Повышение валидности результатов СМС или интернет голосований.

Кроме этого как минимум в 2 случаях авторизация по СМС требуется для соблюдения требований российского законодательства, например:

СМС-верификация:

Разумеется, у СМС-авторизации есть альтернативы. Например, автоматический звонок на номер. Рассмотрим плюсы и минусы звонков.

Плюсы:

+ это может быть дешевле СМС (а может и не быть, в зависимости от выбранной механики сервиса);

+ возможность верификации стационарных телефонов.

Минусы:

- В вечернее или ночное время звонки не удобны/отвлекают/беспокоят;

- Воспринимать на слух всегда сложнее, чем читать текст.

Как сделать авторизацию по СМС на сайте (пример):

Нужна авторизация по СМС? Свяжитесь с нами удобным способом, с удовольствием поможем!

Вы уверены, что хорошо знаете свой смартфон? Думаю, что до известной степени да. Другое дело, что степени той самой известности у каждого из нас разные. Поэтому то, что для одних является чем-то сродни высшей математике, для других – полнейший примитивизм. Это касается в том числе такого понятия, как учётная запись. Очень многие сталкиваются с непониманием, когда видят, что у их смартфона тоже есть учётная запись. Во всяком случае, о непонимании того, что это и зачем нужно, свидетельствуют запросы в Google. А наша задача – восполнить недостающие знания.


На одном смартфоне может быть несколько учётных записей

Учётная запись, или аккаунт – это ваша личная страничка, информация на которой позволяет смартфону или веб-сервисам, которые вы используете, опознать вас при входе. Если у вас смартфон на Android – а я в этом не сомневаюсь, — учётная запись будет от Google, потому что сама операционка принадлежит этой компании. Однако могут быть и исключения, например, на устройствах без сервисов Google.

Зачем нужна учетная запись в телефоне

Учетная запись Google

Основная учётная запись для Android — это, конечно, Google

Учётная запись Google является своего рода способом авторизации и в системе смартфона, и в различных веб-сервисах, которыми вы пользуетесь, фактически исполняя роль виртуального паспорта:

  • Google Play
  • Google Pay
  • Gmail
  • Google Фото
  • Google Drive
  • Google Duo
  • Google Maps
  • Google One
  • YouTube

На самом деле их намного больше. Просто, если перечислять все, не хватит и целой страницы. Но авторизация – это не самое главное. Почти любой сервис Google или стороннее приложение можно использовать и без учётной записи. А прелесть самих учётных записей заключается, как ни странно, в синхронизации данных.

Например, если вы смотрите YouTube или ищете что-то в Google Chrome, не залогинившись, то история просмотра не сохранится. А ведь очень удобно, чтобы она сохранялась, потому что впоследствии это позволит вам получить доступ к ней на других устройствах, будь то планшет, компьютер или другой смартфон. Этой цели и служит учётка.

Как сменить учетную запись на Android


В этом разделе можно переключаться и между аккаунтами, и между профилями

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

Однако не нужно путать понятия учётной записи и профиля. Если учётная запись имеет облачную природу и служит для накапливания и синхронизации данных, то профиль – это чуть менее виртуальная штука. Профиль включает в себя настройки устройства для конкретного пользователя. Например, профиль позволяет использовать один и тот же аппарат нескольким людям, не позволяя их данным, хранящимся на встроенном накопителе, как-либо пересекаться.

Свободное общение и обсуждение материалов


Amazon, как и все крупные технологичные компании, проводит свое традиционное ежегодное мероприятие. Было оно и в этом году. Приятно, что компания не разочаровала и выдала целую россыпь гаджетов, каждый из которых сам по себе вызывает интерес. Даже если они и будут продаваться не на всех рынках, они все равно привлекают много внимания своей инновационностью. Новые продукты в основном связаны с умным домом, включая амбициозного робота Astro на базе Alexa, а также пару умных дисплеев, которые помогают семьям оставаться на связи друг с другом. Давайте посмотрим на них, как на вестников технологий, способных скоро прийти в каждый дом.


Шум. Он окружает нас везде. Дома, на улице, в машине и даже в собственной постели мы постоянно слышим, как что-то где-то шумит. У этого шума могут быть самые разные источники, и в зависимости от того, кто его издаёт, мы относимся к нему совершенно по-разному. Мы готовы стерпеть скандалы соседей за стеной, пронзительный звук сигнализации припаркованного под окнами автомобиля и даже крики ворон на дереве напротив дома. Но мириться с шумом холодильника или, скажем, кондиционера мы мириться не хотим и считаем своим долгом доложить производителю или продавцу о шуме, превышающим всякие нормы. Тем более, что измерить его так просто.

геншин импакт

Наверняка вы уже видели рекламу Геншин Импакт, какой-то новой игры, которая вышла для мобильных платформ. Насколько я могу судить, продвигают её в основном блогеры, чья аудитория - это люди в возрасте 13-27 лет. Ситуация, в общем говоря, совершенно стандартная. Мне она напоминает времена, где все пиарили Raid: Shadow Legends. Ну, игра и игра. Какая мне, человеку не играющему в мобильные тайтлы, вообще может быть разница. Но Геншин Импакт - это совсем другое дело, потому что на ней все будто помешались. Значит, нужно разобраться, что это за зверь такой, и понять, стоит ли овчинка выделки.

Почему SMS — не лучший выбор для двухфакторной аутентификации, и какие существуют альтернативы.


18 октября 2018

За последние пару лет идея двухфакторной аутентификации, о которой так долго говорили гики, сильно продвинулась в массы. Однако до сих пор в большинстве случаев речь идет о двухфакторной аутентификации при помощи одноразовых паролей, приходящих в SMS. А это, к сожалению, не очень-то надежный вариант. Вот что может пойти не так:

  • Пароль в SMS можно подсмотреть, если у вас включен показ уведомлений на экране блокировки.
  • Даже если показ уведомлений отключен, можно извлечь SIM-карту из смартфона, установить в другой смартфон и принять SMS с паролем.
  • SMS с паролем может перехватить пробравшийся в смартфон троян.
  • Также с помощью различных махинаций (убеждение, подкуп, сговор и так далее) можно заполучить новую SIM-карту с номером жертвы в салоне сотовой связи. Тогда SMS будут приходить на эту карту, а телефон жертвы просто не будет связываться с сетью.
  • Наконец, SMS с паролем может быть перехвачена через фундаментальную уязвимость в протоколе SS7, по которому эти SMS передаются.

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

В общем, пароли в SMS — это не очень-то безопасно, а иногда даже и очень небезопасно. Поэтому есть смысл озаботиться поиском альтернативных вариантов двухэтапной аутентификации, о чем мы сегодня и поговорим.

Одноразовые коды в файле или на бумажке

Работает это очень просто: по запросу сервис генерирует и показывает на экране десяток одноразовых кодов, которые в дальнейшем могут быть использованы для подтверждения входа в него. Дальше вы просто распечатываете или переписываете эти коды на бумагу и кладете в сейф. Или, что еще проще, сохраняете в зашифрованных записях в менеджере паролей.

В общем, не так важно, будете ли вы хранить эти коды на теплой ламповой бумаге или в бездушном цифровом виде — важно сохранить их так, чтобы они а) не потерялись и б) не могли быть украдены.

Приложения для двухфакторной аутентификации

У единожды сгенерированного набора одноразовых кодов есть один недостаток: рано или поздно он закончится, и вполне может так получиться, что вы останетесь без кода в самый неподходящий момент. Поэтому есть способ лучше: можно генерировать одноразовые коды на лету с помощью небольшого и, как правило, очень простого приложения — аутентификатора.

Как работают приложения-аутентификаторы

Работают приложения для двухфакторной аутентификации очень просто. Вот что придется сделать:

  • устанавливаете на смартфон приложение для двухфакторной аутентификации;
  • заходите в настройки безопасности сервиса, который среди опций для двухфакторной аутентификации предлагает использовать такие приложения;
  • выбираете двухфакторную аутентификацию с помощью приложения;
  • сервис покажет вам QR-код, который можно отсканировать прямо в 2FA-приложении;
  • сканируете код приложением — и оно начинает каждые 30 секунд создавать новый одноразовый код.

Как зарегистрировать приложение-аутентификатор в Facebook

Коды создаются на основе ключа, который известен только вам и серверу, а также текущего времени, округленного до 30 секунд. Поскольку обе составляющие одинаковы и у вас, и у сервиса, коды генерируются синхронно. Этот алгоритм называется OATH TOTP (Time-based One-time Password), и в подавляющем большинстве случаев используется именно он.

Также существует альтернатива — алгоритм OATH HOTP (HMAC-based One-time Password). В нем вместо текущего времени используется счетчик, увеличивающийся на 1 при каждом новом созданном коде. Но этот алгоритм редко встречается в реальности, поскольку при его использовании гораздо сложнее обеспечить синхронное создание кодов на стороне сервиса и приложения. Проще говоря, есть немалый риск, что в один не очень прекрасный момент счетчик собьется и ваш одноразовый пароль не сработает.

Так что можно считать OATH TOTP де-факто индустриальным стандартом (хотя формально это даже не стандарт, на чем создатели этого алгоритма очень настаивают в его описании).

Совместимость приложений для двухфакторной аутентификации и сервисов

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

Как и в любом добротном правиле, в этом тоже есть определенное количество исключений. Некоторые сервисы по каким-то причинам, ведомым только им одним, предпочитают делать свои собственные приложения для двухфакторной аутентификации, которые работают только с ними. Более того, сами сервисы не работают ни с какими другими приложениями, кроме своих собственных.

Особенно это распространено среди крупных издателей компьютерных игр — например, существуют несовместимые со сторонними сервисами приложения Blizzard Authenticator, Steam Mobile с встроенным аутентификатором Steam Guard, Wargaming Auth и так далее. Для этих сервисов придется ставить именно эти приложения.

Также по этому странному пути пошла Adobe, разработавшая Adobe Authenticator, который работает только с аккаунтами AdobeID. Но при этом вы можете использовать для защиты AdobeID и другие аутентификаторы, так что вообще непонятно, ради чего было городить огород.

Поэтому просто выбирайте приложение-аутентификатор, которое вам больше нравится по набору дополнительных функций — оно будет работать с большинством сервисов, которые вообще поддерживают 2FA-приложения.

Лучшие приложения для двухфакторной аутентификации

Несмотря на то что базовая функция у всех этих приложений одна и та же — создание одноразовых кодов по одному и тому же алгоритму, некоторые аутентификаторы обладают дополнительными функциями или особенностями интерфейса, которые могут показаться вам удобными. Перечислим несколько самых интересных вариантов.

1. Google Authenticator

Поддерживаемые платформы: Android, iOS

Как отмечают буквально все публикации, Google Authenticator — это самое простое в использовании из всех существующих приложений для двухфакторной аутентификации. У него даже настроек нет. Все, что можно сделать, — это добавить новый токен (так называется генератор кодов для отдельного аккаунта) или удалить один из имеющихся. А чтобы скопировать код в буфер обмена, достаточно коснуться его пальцем на сенсорном экране смартфона или планшета. Все!

Однако у такой простоты есть и недостаток: если вам что-то не нравится в интерфейсе или хочется от аутентификатора чего-то большего — придется устанавливать другое приложение.

+ Очень просто использовать.

2. Duo Mobile

Поддерживаемые платформы: Android, iOS

Duo Mobile также крайне прост в использовании, минималистичен и лишен дополнительных настроек. По сравнению с Google Authenticator у него есть одно преимущество: по умолчанию Duo Mobile скрывает коды — чтобы увидеть код, надо нажать на конкретный токен. Если вы, как и я, испытываете дискомфорт каждый раз, когда открываете аутентификатор и показываете всем окружающим кучу кодов от всех своих аккаунтов сразу, то вам эта особенность Duo Mobile наверняка понравится.

+ По умолчанию скрывает коды.

3. Microsoft Authenticator

Поддерживаемые платформы: Android, iOS

В Microsoft тоже не стали усложнять и сделали свой аутентификатор на вид очень минималистичным. Но при этом Microsoft Authenticator заметно функциональнее, чем Google Authenticator. Во-первых, хоть по умолчанию все коды показываются, но каждый из токенов можно отдельно настроить так, чтобы при запуске приложения код был скрыт.

Во-вторых, Microsoft Authenticator упрощает вход в аккаунты Microsoft. В этом случае после ввода пароля достаточно будет нажать в приложении кнопку подтверждения входа — и все, можно даже не вводить одноразовый код.

+ Можно настроить, чтобы коды скрывались.
+ Дополнительные возможности для входа в аккаунты Microsoft.

4. FreeOTP

Поддерживаемые платформы: Android, iOS

Есть четыре причины, по которым вам может понравиться этот аутентификатор, разработанный Red Hat. Во-первых, это ваш выбор, если вы любите программное обеспечение с открытым кодом. Во-вторых, это самое маленькое приложение из всех рассматриваемых — версия для iOS занимает всего 750 Кбайт. Для сравнения: минималистичный Google Authenticator занимает почти 14 Мбайт, а приложение Authy, о котором мы поговорим ниже, — аж 44 Мбайта.

В-третьих, по умолчанию приложение скрывает коды и показывает их только после касания. Наконец, в-четвертых, FreeOTP позволяет максимально гибко конфигурировать токены вручную, если вам это зачем-нибудь нужно. Разумеется, обычный способ создания токена с помощью сканирования QR-кода тоже поддерживается.

+ По умолчанию скрывает коды.
+ Приложение занимает всего 700 Кбайт.
+ Открытый код.
+ Максимум настроек при создании токена вручную.

5. Authy

Поддерживаемые платформы: Android, iOS, Windows, macOS, Chrome

Самое навороченное из приложений для двухфакторной аутентификации, основным достоинством которого является то, что все токены хранятся в облаке. Это позволяет получить доступ к токенам с любого из ваших устройств. Заодно это упрощает переезд на новые устройства — не придется заново активировать 2FA в каждом сервисе, можно продолжить пользоваться существующими токенами.

В облаке токены зашифрованы ключом, который создается на основе заданного пользователем пароля, — то есть данные хранятся безопасно, и украсть их будет нелегко. Также можно установить ПИН-код на вход в приложение — или защитить его отпечатком пальца, если ваш смартфон оснащен соответствующим сканером.

Основной недостаток Authy состоит в том, что приложение с ходу требует завести аккаунт, привязанный к вашему телефонному номеру, — без этого просто не получится начать с ним работать.

− Требуется зарегистрироваться в Authy, используя номер телефона, — без этого приложение не работает.

Поддерживаемые платформы: Android, iOS

− При большом количестве токенов не очень удобно искать нужный.

Если приложение, генерирующее одноразовые коды, кажется вам слишком эфемерным способом защитить свои аккаунты, и хочется чего-то более постоянного, надежного и материального — буквально запереть аккаунт на ключ и положить его в карман, — то у меня есть для вас хорошая новость: такой вариант также существует. Это аппаратные токены стандарта U2F (Universal 2nd Factor), созданного FIDO Alliance.

Как работают токены FIDO U2F

Аппаратные U2F-токены очень полюбились специалистам по безопасности — в первую очередь потому, что с точки зрения пользователя они работают очень просто. Для начала работы достаточно подключить U2F-токен к вашему устройству и зарегистрировать его в совместимом сервисе, причем делается это буквально в пару кликов.

Как войти в Facebook, используя для аутентификации ключ YubiKey

Вставьте ключ и нажмите кнопку — и это действительно все

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

Какими бывают U2F-устройства

YubiKey от Yubico — самые популярные U2F-токены

YubiKey — вероятно, самые популярные U2F-токены

Например, Google недавно представила свой комплект аппаратных аутентификаторов Google Titan Security Keys. На самом деле это ключи производства Feitian Technologies (второй по популярности производитель U2F-токенов после Yubico), для которых в Google написали собственную прошивку.

NFC — необходим для использования со смартфонами и планшетами на Android.

Bluetooth — понадобится на тех мобильных устройствах, в которых нет NFC. К примеру, аутентификатор с Bluetooth все еще нужен владельцам iPhone: несмотря на то, что в iOS уже разрешили приложениям использовать NFC (до 2018 года это было позволено только Apple Pay), разработчики большинства совместимых с U2F приложений еще не воспользовались этой возможностью. У Bluetooth-аутентификаторов есть пара минусов: во-первых, их нужно заряжать, а во-вторых, их подключение занимает гораздо больше времени.

В базовых моделях U2F-токенов обычно есть только поддержка собственно U2F — такой ключ обойдется в $10–20. Есть устройства подороже ($20–50), которые заодно умеют работать в качестве смарт-карты, генерировать одноразовые пароли (в том числе OATH TOTP и HOTP), генерировать и хранить ключи PGP-шифрования, могут использоваться для входа в Windows, macOS и Linux и так далее.

Что же выбрать: SMS, приложение или YubiKey?

Так или иначе, главный совет — по возможности избегать использования одноразовых паролей в SMS. Правда, получится это не всегда: например, финансовые сервисы в силу своей консервативности продолжают использовать SMS и крайне редко позволяют пользоваться чем-либо еще.

Читайте также: