[tLogin] - Авторизация через Телеграм

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


Основные возможности компонента:


  1. Аутентификация через ваш телеграм. Вам приходит запрос в программу на телефоне (или компьютере)
  2. Фоновая регистрация пользователя без заполнения персональных данных
  3. Возможность представляться без фоновой регистрации. Предусмотрена настройка отключить регистрацию. Персональные данные пишутся в кэш MODX. Далее их можно подставить просто в форму комментария например. Не знаю будет ли востребована идея, в моем рабочем опыте был клиент, просивший сделать возможность быстро представляться без регистрации

Ограничения:


Телеграм присылает не так много данных
  • Имя
  • Фамилия (если есть)
  • Юзернейм
  • Аватар
Номер телефона остается скрытым. Email в базе телеграм нет вообще, поэтому первоначально для регистрации генерируется email пользователя с маской username@fakesite.ru. Далее в личном кабинете — который не сложно организовать — можно сменить свой email на настоящий.

Установка и предварительная настройка
Компонент будет доступен в modstore

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

1. Открываем ваш телеграм
2. Ищем в поиске бота @botFather — он отвечает за создание ботов. Добавляем его себе
3. Пишем папаше ботов команду /newbot и отвечаем на несколько вопросов. Сначала придумаем имя бота. Затем задаем уникальное имя, через которое сможем обращаться к нашему боту через поиск. Username должен заканчиваться на _bot. Например, называем его как сайт s1441 и задаем юзернейм s1441_bot
4. На этом все. Бот создан. Вам выдается уникальный token — не забудьте его сохранить. Он пригодится при настройке компонента.
5. Последнее что нужно сделать указать с каким доменом будет работать бот. Пишем в диалоге с botFather /setdomain. Папаша ботов предлагает выбрать бота для которого вы собираетесь задать домен. У вас их может быть несколько. После выбора нужного бота — указываете адрес сайта, к которому будет привязан бот.
Вот и вся настройка

Настройка MODX
В системных настройках нужно указать юзернейм бота (которое с _bot) и токен, выданный для бота пару шагов назад.

Авторизация разрешена пока, только в контекст web

Компонент очень сырой, зато бесплатный. Если сообщество поддержит и он будет востребован хоть немного, будем дорабатывать и развивать на основе обратной связи.
Николай Савин
13 июля 2018, 12:05
1
455
+8

Комментарии: 21

Артем
13 июля 2018, 12:10
0
Класс, я тоже на сайте всю авторизацию перевел на телеграм.
Алексей Соин
13 июля 2018, 12:11
0
Хм… по моему что то не так
    Илья
    13 июля 2018, 13:08
    0
    У меня тоже самое.
    Это не связано с блокировкой Телеграм?
      Николай Савин
      13 июля 2018, 13:12
      0
      А вот хз. По идее идет прямое обращение к телеграму и подгрузка фрейма, как, скажем в google captcha. Так что если телега не доступна — то и виджет не появится.
      В Казахстане страница выглядит вот так
      Дмитрий
      13 июля 2018, 13:41
      +1
      Это всё происки роскомпозора или хостинг-провайдера. Они уже как пару месяцев что-то мудрят то ли с подменой сертификатов, то ли еще чего, в общем, заблокированные сервисы по SSL недоступны.
Вася
13 июля 2018, 13:17
0
Все хорошо
только телеграм заблокирован и работает через раз
Василий Столейков
13 июля 2018, 17:08
0
Круто, очень классно получилось!

Для очистки виджета, нажмите кнопку выхода в своем Телеграм
То есть нужно выходить из программы телеграмма на компе? Неудобно как-то…
    Василий Столейков
    13 июля 2018, 17:26
    0
    То есть нужно выходить из программы телеграмма на компе? Неудобно как-то…
    А, сорри, не сразу понял смысл этих слов. Нужно выходить не из телеграмма, а нажимать на пноку Disconnect в боте, который запросил авторизацию на сайте. Теперь всё логично. ))
Артем
15 июля 2018, 18:42
0
Когда ждать компонент?
    Николай Савин
    16 июля 2018, 06:40
    0
    Ой — это вопрос с модератеру, который в жизни очень сильно занятой человек.
    Добавлю пока в посте ссылку на транспортный пакет, который можно установить вручную
Артем
18 июля 2018, 22:45
0
Ссылка выхода не работает, просто перекидывает на главную. Если ручками прописать в адрес ?logout=1, то все работает.
Почему не даете в компоненте id usera?
    Артем
    18 июля 2018, 22:55
    0
    Как без id проверять что-это именно этот пользователь, а не другой?
    Николай Савин
    19 июля 2018, 18:21
    0
    Ссылка выхода не работает, просто перекидывает на главную. Если ручками прописать в адрес ?logout=1, то все работает.
    Какая версия компонента установлена? В 1.0.2 по идее ошибка исправлена.
    UPD. Виноват, версию выпустил — выгрузить в магазин забыл. Можно обновляться
    Если эта версия стоит и все равно не работает — могу посмотреть в чем дело уже на сайте.
    Почему не даете в компоненте id usera?
    Потому что текущий пользователь и без id доступен в modx->user
      Артем
      19 июля 2018, 21:12
      0
      1.0.2 вообще сломала весь сайт удалив pdo.

      Я про id user в телеграмме, он же возвращает его.
        Николай Савин
        19 июля 2018, 21:41
        0
        1.0.2 вообще сломала весь сайт удалив pdo.
        Странно, потестирую.
        Я про id user в телеграмме, он же возвращает его.
        ID телеграм юзера мы принимаем и храним в extended поле. Как и все остальные поля отдаваемые телегой. Я никак в толк не возьму зачем его где то использовать? В каком случае?
          Артем
          19 июля 2018, 21:58
          0
          А вот теперь понял, то есть проверка происходит не по имени, а по возвращаемому id?
            Николай Савин
            19 июля 2018, 22:01
            0
            Проверка чего?
              Артем
              19 июля 2018, 22:02
              0
              Что это тот юзер, не просто чувак с таким же ником
                Николай Савин
                19 июля 2018, 22:05
                0
                Ну да, проверяю есть ли в профиле данные телеграма.
                А вообще можно и исходный код посмотреть, он крайне простенький.
                  Артем
                  19 июля 2018, 22:12
                  0
                  Сорри за глупые вопросы, хотел разобраться)