Недавно Telegram добавил поддержку виджета для авторизации пользователей на сайте. Мы решили поэкспериментировать с ним и составить простую инструкцию, как настроить такую авторизацию самостоятельно.
В качестве примера будем использовать код на PHP, однако, данные шаги актуальны и для других языков программирования.
Настройка бота
Для использования виджета вам понадобится Telegram-бот.
Скопируйте токен бота, через которого вы хотите производить авторизацию пользователей.
Название и аватарка выбранного вами бота будут показаны пользователю во всплывающем окне. А вы получите возможность отправлять пользователю личные сообщения через этого бота.
To find telegram id
Настройка виджета
На сайте можно получить код виджета и выбрать его внешний вид. К сожалению, возможностей для его произвольного конфигурирования на данный момент нет т.к. виджет встраивается на сайт посредством iframe.
Встраивание на сайт
После того, как пользователь нажмёт на кнопку, Telegram готов отправить вам данные любым из двух способов:
- Отправить пользователя на ваш сайт путём редиректа, передав информацию о нём в GET параметрах.
- Вызвать JavaScript функцию, передав в неё информацию о пользователе в качестве аргументов.
На данный момент поддерживаются следующие данные о пользователе:
- id – уникальный идентификатор пользователя в Telegram
- first_name, last_name – фамилия и имя из профиля пользователя
- username – уникальное имя из профиля
- photo_url – ссылка на аватарку пользователя в виде https://t.me/i/. /user.jpg
- auth_date – дата авторазации
- hash – HMAC-подпись ответа на основе секретного токена бота
Получение данных через JavaScript callback
Выберите в конструкторе виджета опцию Authorization Type: Callback. Сгенерированный в результате код виджета содержит JavaScript функцию, которая будет вызвана после успешной авторизации.
Эту функцию нужно передать в аттрибуте data-onauth тега
Вы можете произвольным образом реализовать функцию onTelegramAuth. Например, послать AJAX запрос на сервер с полученными аргументами.
Получение данных через Redirect
Выберите в конструкторе виджета опцию Authorization Type: Redirect to URL и введите URL, на который вы хотите получить запрос с данными пользователя. Например, введите адрес http://example.com/auth/telegram.
На странице обработки можно положить скрипт index.php следующего содержания:
Получаем ID чата в телеграмм одним кликом мыши
Проверка данных пользователя
Чтобы удостовериться в правильности полученных данных, нужно проверить hash. Разработчики Telegram приводят пример кода проверки, добавим эту функцию в код из файла index.php
function checkTelegramAuthorization($auth_data) < $check_hash = $auth_data[‘hash’]; unset($auth_data[‘hash’]); $data_check_arr = []; foreach ($auth_data as $key =>$value) < $data_check_arr[] = $key . ‘=’ . $value; >sort($data_check_arr); $data_check_string = implode(«n», $data_check_arr); $secret_key = hash(‘sha256’, BOT_TOKEN, true); $hash = hash_hmac(‘sha256’, $data_check_string, $secret_key); if (strcmp($hash, $check_hash) !== 0) < throw new Exception(‘Data is NOT from Telegram’); >if ((time() — $auth_data[‘auth_date’]) > 86400) < throw new Exception(‘Data is outdated’); >return $auth_data; >
Разберём механизм работы функции проверки. В качестве аргумента она получает массив с данными пользователя.
array(7) < [«id»]=>string(7) «1831337» [«first_name»]=> string(18) «Александр» [«last_name»]=> string(16) «Менщиков» [«username»]=> string(5) «n0str» [«photo_url»]=> string(36) «https://t.me/i/userpic/100/n0str.jpg» [«auth_date»]=> string(10) «1518168109» [«hash»]=> string(64) «abba<..>1345» >
На первом шаге из массива извлекается значение по ключу hash и сохраняется в переменной.
На втором шаге массив преобразуется к виду key=value и сортируется в лексикографическом порядке. Полученные данные склеиваются в одну строку через разделитель “n” (код символа – 0xA0).
Далее происходит проверка равенства HMAC-SHA-256 подписи этой строки и значения сохранённого hash. Дополнительно проверяется не устарела ли auth_date.
В случае успеха, функция возвращает исходный массив без параметра hash.
Авторизация пользователя на сайте
Добавим в файл код вызова функции проверки
if (isset($_GET[‘hash’])) < try < $auth_data = checkTelegramAuthorization($_GET); echo «Hello, » . $auth_data[‘username’]; >catch (Exception $e) < die ($e->getMessage()); > >
Пользователь увидит сообщение с приветствием в случае успешной авторизации. Теперь вы можете сохранить информацию о нём в базу данных и привязать его ID к текущей сессии.
Пример кода из рабочего проекта
try < $profile = $tg->checkTelegramAuthorization($_GET); $id = $profile[‘id’]; $user = Model_User::findByAttribute(‘telegram_id’, $id); if ($user->is_empty()) < $user = new Model_User(); $user->telegram_id = $id; . $user->save() > else < . >>
Кастомизация кнопки
Сейчас из-за ограничений iframe нельзя изменить внешний вид кнопки. Однако, если возникла сильная необходимость, можно обойти это ограничения с помощью clickjacking.
Что дает id телеграм?
«Телеграмм» использует протоколы для социальных сетей, где личные аккаунты и сообщества (чаты, каналы) распознаются при помощи специального численного идентификатора. Уникальный ID (айди) необходим системе для точной идентификации пользователя.
Что дает ID пользователя Телеграм?
Как узнать ID СКАМЕРА | Как узнать ID пользователя Телеграм
Telegram user ID — это цифровой код, который присваивается каждому аккаунту при регистрации. Этот идентификатор нужен системе, чтобы корректно сохранять данные и связывать их с конкретным юзером. Найти ID своего аккаунта или другого чата в меню мессенджера не получиться.
Как найти человека по ID телеграмм?
Что можно узнать по нику в телеграмме?
Бот позволяет получить сведения о имени и фамилии пользователя Telegram, его номер ID, а также привязанный к аккаунту номер мобильного телефона. Для получения информации о пользователе мессенджера Telegram следует направить боту его никнейм или номер ID.
Как изменить свой ID в телеграмме?
Каждый аккаунт Telegram имеет постоянный User ID, сменить который пользователь не имеет возможности. Многие базы данных уже содержат User ID, что позволяет получить историю мобильных номеров, привязывавшихся к аккаунту ранее, и использованных ранее username.
Как узнать ID чата в телеграмм?
ID одиночных чатов узнавал с помощью ‘getUpdates’ и успешно отправлял сообщения в них ‘sendMessage’. Этот же метод судя по документации подходит для отправки сообщений в группы.
Можно ли найти человека в телеграмм без номера телефона?
See also: Как Добавить Свою Музыку В Apple Music?
Как узнать у кого есть мой номер телефона в телеграмме?
Все. Пользователи, которые сохранили номер в телефонную книгу, будут видеть его и в Telegram. Мои контакты. Пользователи, которые сохранили номер в телефонную книгу, будут видеть его и в Telegram, при условии если Вы добавили их в контакты.
Почему не могу найти человека в телеграмме по номеру телефона?
Что касается людей, то рассчитывать на глобальный поиск особо не приходится. Найти человека, как в соцсетях, здесь довольно сложно. Самым надёжным способом является поиск по номеру телефона. Но и он возможен лишь в том случае, если пользователь не установил на него запрет и не скрыл номер в настройках приватности.
Как скрыть свой номер телефона в телеграмме?
Для этого откройте настройки мессенджера, перейдите в раздел «Конфиденциальность» и нажмите на « Номер телефона». Чтобы полностью скрыть телефон в первом блоке выберите «Никто», а во втором «Мои контакты». Ниже можно будет добавить исключения.
Можно ли вычислить человека в телеграмме?
Telegram позволяет за несколько минут вычислить точные координаты своих пользователей, использующих встроенный сервис «Люди рядом». Алгоритм обнаружения прост, что дает возможность следить за нужным человеком даже тем, у кого нет никаких навыков хакинга.
Как Деанонимизируют в телеграмме?
Отправив ссылку на статью «цели» деанонимизации, можно будет получить его данные. Если он перейдет по ссылке, логгер соберет информацию о пользователе и запишет данные в базу. Для массовости деанонимизации достаточно купить рекламный текст, содержащий эту ссылку, в крупном Telegram -канале.
Как можно найти человека в телеграмме?
Как найти и добавить человека в Telegram через поиск На мобильном устройстве или компьютере вбейте в строку поиска имя, фамилию либо никнейм человека, которого хотите найти. Если нужный пользователь нашёлся, выберите его в списке для перехода в чат и кликните по имени профиля.
Источник: www.electromoto.net