[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

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

UPD — заметили случай, что регистрация\авторизация через штатные механизны MODX не срабатывает, если у пользователя telegram пустой username.
Николай Савин
13 июля 2018, 12:05
modx.pro
2
4 510
+8
Поблагодарить автора Отправить деньги

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

Артем
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
                              Сорри за глупые вопросы, хотел разобраться)
                V
                V
                12 декабря 2018, 13:30
                0
                Хороший компонент, поставил себе на сайт. Автору отдельное спасибо за оперативную помощь. Побольше бы таких людей.
                  TITAN-UZ
                  24 июня 2020, 14:23
                  0
                  Привет Николай ест вопросы
                  1) Как перенаправит на главную страницу после регистрации
                  2) Как сменит окно регистрации Telegramm на русский
                    Николай Савин
                    24 июня 2020, 14:25
                    0
                    Привет. Не помню уже как он устроен. Я один раз сделал и забыл.
                    Нужно поднимать исходники, смотреть.
                    Андрей
                    28 апреля 2022, 18:40
                    0
                    Вход работает с любой страницы кроме главной.
                    Кидает на адрес:
                    site.ru/?Id=000&first_name=Name&last_name=Name&username=Name&auth_date=000&hash=000
                      Андрей
                      28 апреля 2022, 20:22
                      0
                      Прикол )
                      Если в качестве страницы 404 указать главную, то работает.
                        Андрей
                        28 апреля 2022, 20:40
                        0
                        Если сниппет вызвать в шаблоне 404, тоже срабатывает, но остается на ней после авторизации.
                        Как сделать чтобы
                        site.ru/?Id=000&first_name=Name
                        обрабатывался, а не выдавал 404?
                          Андрей
                          28 апреля 2022, 23:03
                          0
                          Разобрался!
                          Нужно изменить request_param_id
                        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                        28