К содержанию

[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
6 831
Реклама

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

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

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

                    Я про id user в телеграмме, он же возвращает его.
                      Николай Савин
                      Николай Савин Администратор
                      19 июля 2018, 21:41
                      1.0.2 вообще сломала весь сайт удалив pdo.
                      Странно, потестирую.
                      Я про id user в телеграмме, он же возвращает его.
                      ID телеграм юзера мы принимаем и храним в extended поле. Как и все остальные поля отдаваемые телегой. Я никак в толк не возьму зачем его где то использовать? В каком случае?
                        Артем
                        Артем Старожил
                        19 июля 2018, 21:58
                        А вот теперь понял, то есть проверка происходит не по имени, а по возвращаемому id?
                          Николай Савин
                          Николай Савин Администратор
                          19 июля 2018, 22:01
                          Проверка чего?
                            Артем
                            Артем Старожил
                            19 июля 2018, 22:02
                            Что это тот юзер, не просто чувак с таким же ником
                              Николай Савин
                              Николай Савин Администратор
                              19 июля 2018, 22:05
                              Ну да, проверяю есть ли в профиле данные телеграма.
                              А вообще можно и исходный код посмотреть, он крайне простенький.
                                Артем
                                Артем Старожил
                                19 июля 2018, 22:12
                                Сорри за глупые вопросы, хотел разобраться)
                  V
                  V Старожил
                  12 декабря 2018, 13:30
                  Хороший компонент, поставил себе на сайт. Автору отдельное спасибо за оперативную помощь. Побольше бы таких людей.
                    TITAN-UZ
                    TITAN-UZ Проверенный
                    24 июня 2020, 14:23
                    Привет Николай ест вопросы
                    1) Как перенаправит на главную страницу после регистрации
                    2) Как сменит окно регистрации Telegramm на русский
                      Николай Савин
                      Николай Савин Администратор
                      24 июня 2020, 14:25
                      Привет. Не помню уже как он устроен. Я один раз сделал и забыл.
                      Нужно поднимать исходники, смотреть.
                      Андрей
                      Андрей Старожил
                      28 апреля 2022, 18:40
                      Вход работает с любой страницы кроме главной.
                      Кидает на адрес:
                      site.ru/?Id=000&first_name=Name&last_name=Name&username=Name&auth_date=000&hash=000
                        Андрей
                        Андрей Старожил
                        28 апреля 2022, 20:22
                        Прикол )
                        Если в качестве страницы 404 указать главную, то работает.
                          Андрей
                          Андрей Старожил
                          28 апреля 2022, 20:40
                          Если сниппет вызвать в шаблоне 404, тоже срабатывает, но остается на ней после авторизации.
                          Как сделать чтобы
                          site.ru/?Id=000&first_name=Name
                          обрабатывался, а не выдавал 404?
                            Андрей
                            Андрей Старожил
                            28 апреля 2022, 23:03
                            Разобрался!
                            Нужно изменить request_param_id
                          Олег Захаров
                          Олег Захаров Проверенный
                          07 февраля 2025, 16:45
                          Поставил компонент, добавил в папе ботов бот, прописал в настройки. А дальше что делать?
                          Захожу в созданного бота, ничего не происходит.
                          Нет нормальной документации на компонент.
                          Как запускать процесс авторизации, как повесить кнопку?
                          Хотел сделать на сайте форму со скачкой документации после авторизации в Телеге.
                          Прошу поделиться информацией как его правильно подключить.
                            Кирилл
                            17 февраля 2025, 22:54
                            Всем, доброго.
                            Подскажите, пожалуйста, данный компонент на локальном сервере (localhost/) проверить можно или он не будет там работать?
                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                              30