Всем привет. Давно ничего не писал, так как не было никаких идей, но недавно, 31 мая 2019 года, Telegram выпустил новое обновление, в котором добавил новый тип данных — LoginUrl. Итак, попробую объяснить идею авторизации с помощью Telegram бота. Для начала, чтобы бот мог писать пользователю, пользователь должен отправить сообщение /start.
Бот может как угодно ответить на это сообщение, например обычным приветствием или набором кнопок для взаимодействия с ботом. Именно кнопками мы и будем пользоваться для авторизации, но об этом чуть позже. Пользователь жмет на нашу кнопку, после чего перед ним появляется окошко с подтверждением действия. Если пользователь подтверждает свое действие, то он переходит на указанный в параметрах url с данными своего аккаунта, в том числе и уникальный id для пользователя.
- chat_id — в данном случае id пользователю, которому мы отправляем сообщение. Получаем от Telegram в методе getUpdates или с помощью Webhook.
- text — текст сообщения. В данном случае он нам не нужен, так как мы будем использовать кнопку. Но если хотите объясниться перед пользователем, то это идеальный момент.
- parse_mode — Указывает формат отправляемого сообщения. Поддерживаются Markdown и HTML.
- disable_web_page_preview — Отключает превью для ссылки в данном сообщении.
- disable_notification — Отправка сообщение без уведомления для юзера.
- reply_to_message_id — Указывает на id сообщения, которое мы цитируем.
- reply_markup — Добавляет кнопки.
Как можно было догадаться, нам необходимы chat_id и reply_markup. reply_markup принимает параметры в виде json массива с указанием типа кнопок и их параметров. Мы будем использовать inline_keyboard, так как они поддерживают LoginUrl. Ну давайте создадим простую кнопку:
What is Telegram Token Toncoin (TON)?
$keyboard = Array( ‘inline_keyboard’ => [ [ [‘text’ => ‘Нажми меня’, ‘login_url’ => [ ‘url’ => ‘https://web-wost.ru’ ] ] ] ] );
Не забываем перевести данную кнопку в json:
$keyboard_json = json_encode($keyboard);
Ну и отправляем:
file_get_contents(‘https://api.telegram.org/bot’ . $token . ‘/sendMessage?chat_id=’ . $id . ‘reply_markup=’ . $keyboard_json);
Не забываем так же создать переменные $token с токеном бота и $id с указанием id пользователя. Если всё сделано верно, то после выполнения данного php скрипта, бот отправит пользователю сообщение с кнопкой ‘Нажми меня’. После нажатия на кнопку, пользователя спросят разрешение об отправке данных и переходе по ссылке. Получаем данные от пользователя с помощью REQUEST:
$user_id = $_REQUEST[‘id’]; $username = $_REQUEST[‘username’]; $hash = $_REQUEST[‘hash’];
В принципе так мы получаем необходимые данные о пользователе, но их можно легко подменить. Для безопасности передачи данных Telegram отправляет нам hash. Для его проверки воспользуемся следующим кодом:
$data = $_REQUEST; $hash = $data[‘hash’]; unset($data[‘hash’]); $new_data = []; foreach($data as $key => $value) $new_data[] = $key . ‘=’ . $value; sort($new_data); $data_string = implode(‘n’, $new_data); $secret_hash = hash(‘sha256’, $token, true); $new_hash = hash_hmac(‘sha256’, $data_string, $secret_hash); if(strcmp($hash, $new_hash) !== 0) exit(‘Подмена данных. ‘); echo ‘Привет ‘ . $data[‘username’];
Попробую разобрать данный код.
Telegram Bot Tokens, Unveiled: Your Gateway to Web3 Glory! | CertiK
Сначала мы записываем все полученные данные в переменную $data, далее сохраняем hash в специальную переменную($hash) и удаляем его из массива данных $data. Создаем новый пустой массив($new_data) для наших данных. Используя foreach, мы проходим через все полученные данные, записывая их в наш новый массив($new_data), сохраняя ключ=значение.
Сортируем по алфавиту, превращаем в строку $data_string, записывая элементы через n. Хешируем наш токен($secret_hash), а дальше и все наши данные($new_hash). И последним шагом является проверка подлинности хэша.
Ну и осталось лишь осмотреть все параметры объекта LoginUrl:
- url — указывает url, куда будет отправлен пользователь после нажатия на ссылку.
- forward_text — текст кнопки в пересылаемых сообщениях.
- bot_username — имя бота, через которого будет происходить авторизация.
- request_write_access — запрос на возможность ботом писать пользователю сообщения.
На этом я заканчиваю, надеюсь эта запись будет полезна 🙂
1 комментариий
Татьяна 2023-07-28 20:21:43 Ничего, к сожалению, не поняла
Новый комментарий
- О проекте
- Отправить публикацию
- Реклама на сайте
- Условия пользования
Источник: web-wost.ru
Токены телеграмма
Шумиха вокруг мессенджера телеграмм усилила его популярность среди пользователей. Без внимания не остались и слухи о создании собственных токенов телеграмма.
Описание
Телеграм является бесплатным приложением с такой отличительной чертой, как отсутствие рекламы. На текущий момент проект не приносит прибыли и в то же время требует от создателей значительных вложений в дальнейшую разработку.
В сложившейся ситуации внедрение в проект криптовалюты является вполне очевидным решением данной проблемы. Павел Дуров планирует проведение ICO, которое по предварительным подсчетам должно принести $ 1,2 млрд. Эта сумма будет получена путем привлечения крупных инвесторов.
Хотите инвестировать в одну из лидирующих криптовалют по уровню капитализации? Узнайте как купить Ripple за рубли разными способами.
Ознакомьтесь с инструкцией пополнения кошелька WebMoney через терминал, мобильный телефон или с помощью банковской карты.
Телеграмм планирует запустить собственную блокчейн платформу под названием TON — Telegram Open Network. Для обмена между пользователями платформы будет использоваться внутренняя монета. Токен телеграмма будет иметь название Gram, а для обозначения разработчики выбрали изображение ограненного бриллианта.
Использовать токены можно будет для различных операций. Самые очевидные способы применения:
- хранение собственных средств на кошельке анонимно, без привлечения банков и других финансовых структур;
- для покупки и продажи товаров и услуг мгновенно непосредственно в чате;
- моментальные переводы между пользователями без задержек и предоставления персональной информации посторонним учреждениям;
- оплата подписок на платных ресурсах или пожертвование на бесплатных;
- использование технологии блокчейн ботами.
Также на платформе TON пользователям будет предоставлена возможность создавать собственные токены и организовывать ICO.
Кто и когда сможет купить
Минимальный вход для инвестирования в ICO телеграмма будет зафиксирован на отметке 20 млн. долларов. На стадии закрытой предпродажи токенов для крупных инвесторов будут предоставляться скидки в размере от 50% до 70%. Таким образом, при ожидаемой цене токена 0,97 $, на первых стадиях продаж его можно будет приобрести за 0,31 $.
Те, кто купят Gram с большой скидкой после этого не смогут приобрести токены в течение определенного времени. Точные сроки еще не известны, но ориентировочно этот период может быть от 3-х до 18-ми месяцев.
Не знаете что такое ЕСМС рассылка от Сбербанка? Ознакомьтесь с описанием здесь.
Узнайте как пополнить кошелек Яндекс.Деньги с Мегафона.
Накопились средства с компьютерных игр на Steam? Вы можете вывести их на QIWI.
Общая эмиссия токенов составляет 5 млрд. монет. Распределение будет выполнено в следующем процентном соотношении:
- 10% будет оставлено для будущего развития платформы;
- 4% предназначено для разработчиков;
- 42% отложат в резерв для сохранения гибкости системы;
- 44% выделят для продажи.
Фактический релиз Gram запланирован на конец 2018 года, но на биржи токен попадет только в конце зимы или весной 2019 года.
Источник: epayinfo.ru