Что такое app hash/app id Telegram
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.
Luxor
Administrator
Команда форума
Администратор
05.07.2019 917 1 361 93 rutube.ru
app hash/app id Telegram — Это аналог login/password из какого-нибудь ВК для авторизации, только не самого пользователя, а целого приложения.
Для чего нужны app_id и api_hash:
Для доступа к Client API надо сделать приложение на my.telegram.org -> Development Tools. app_id и api_hash — это по факту данные приложения, через который пользователь входит в Telegram. Пользователь не может войти в телеграм буквально из ниоткуда.
Зачем сделаны приложения: для того, чтобы можно было управлять возможностями пользователей. То есть массово ограничивать, банить, разрешать (для методов, которые находятся в BETA версии, либо они закрыты).
Также телеграм таким образом собирает статистику, кто каким приложением пользуется и какие функции у данного приложения есть, для того, чтобы можно было улучшать официальный клиент.
Спойлер: Несколько кратких советов
Не переносите аккаунт на котором создана пара на эту пару, в 100% случаев это приводило к бану по нашим опытам.
Доверие к паре формируется изначально по отлежке аккаунта на которую она была создана, по нашему опыту свободный перенос можно осуществлять если аккаунту создателю более 3 месяцев.
Авторизация пользователей через Telegram

Недавно Telegram добавил поддержку виджета для авторизации пользователей на сайте. Мы решили поэкспериментировать с ним и составить простую инструкцию, как настроить такую авторизацию самостоятельно.

В качестве примера будем использовать код на PHP, однако, данные шаги актуальны и для других языков программирования.
Настройка бота
Для использования виджета вам понадобится Telegram-бот.
Перейдите в чат с системным пользователем @botfather. Если у вас ещё нет ни одного бота, создайте его командой /newbot. Посмотреть список своих пользователей вы можете с помощью команды /mybots.

Скопируйте токен бота, через которого вы хотите производить авторизацию пользователей.
Here is the token for bot codex_cloud @codex_cloud_bot: 558<. >728:AWBEwgUg<. >HBKuiINt
Название и аватарка выбранного вами бота будут показаны пользователю во всплывающем окне. А вы получите возможность отправлять пользователю личные сообщения через этого бота.

Для каждого бота нужно привязать конкретный адрес сайта, на котором пользователи могут авторизоваться. В диалоге с @botfather введите команду /setdomain и напишите адрес сайта в виде http://ifmo.su.
Настройка виджета
На сайте можно получить код виджета и выбрать его внешний вид. К сожалению, возможностей для его произвольного конфигурирования на данный момент нет т.к. виджет встраивается на сайт посредством iframe.

Встраивание на сайт
Создайте файл index.php со следующим содержанием
После того, как пользователь нажмёт на кнопку, 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 функцию, которая будет вызвана после успешной авторизации.
function onTelegramAuth(user) < alert('Logged in as ' + user.first_name + ' ' + user.last_name + ' (' + user.id + (user.username ? ', @' + user.username : '') + ')'); >
Эту функцию нужно передать в аттрибуте data-onauth тега
Вы можете произвольным образом реализовать функцию onTelegramAuth. Например, послать AJAX запрос на сервер с полученными аргументами.
Получение данных через Redirect
Выберите в конструкторе виджета опцию Authorization Type: Redirect to URL и введите URL, на который вы хотите получить запрос с данными пользователя. Например, введите адрес http://example.com/auth/telegram.
На странице обработки можно положить скрипт index.php следующего содержания:
Проверка данных пользователя
Чтобы удостовериться в правильности полученных данных, нужно проверить 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.
Внимание! Это решение не рекомендуется к использованию. Clickjacking вводит пользователей в заблуждение, а поисковые системы могут понизить ваш сайт в выдаче в качестве наказания.
Идея состоит в том, чтобы разместить iframe с кнопкой поверх ссылки, оформленной по вашему вкусу. Если такой iframe сделать прозрачным, то пользователь кликнет внутрь него, пытаясь нажать на ссылку.
Итоги
Telegram выпустила полезный инструмент, который позволяет авторизовать пользователей на своём сайте и привязать их профиль к Telegram-аккаунту. К сожалению, пока не поддерживается свободная кастомизация их виджета, а также нет удобного API для аутентификации. Вероятно, в ближайшее время они добавят такие возможности.
Ссылки для подробного изучения
- Официальная документация – https://core.telegram.org/widgets/login
- Анонс виджета – https://telegram.org/blog/login
- Документация по боту Telegram – https://core.telegram.org/bots#creating-a-new-bot
- Примеры кода проверки авторизации – https://gist.github.com/anonymous/6516521b1fb3b464534fbc30ea3573c2
If you like this article, share a link with your friends
Read more
We talk about interesting technologies and share our experience of using them.
What is access_hash in telegram API?
I know libs like pyrogram , telethon store this access_hash inside their local sqlite databases. This way they make it possible to call high level functions which require both id and access_hash using only id .
asked Mar 21 at 16:26
1,067 1 1 gold badge 9 9 silver badges 28 28 bronze badges
It’s not limited to resolveUsername , access_hash is available on a lot of Types.
Mar 21 at 16:51
@0stone0 yeah, I know, but still it doesn’t explain anything, unfortunately.
Mar 21 at 16:57
1 Answer 1
The access_hash values commonly appear in Telegram’s API when access to something should be «restricted» in some way. You can find access_hash for users, channels, or even media objects.
I’ll be using Telethon for the examples below, but the same applies to any library interacting with Telegram’s API.
Does it change over time? Probably not. To the best of my knowledge, the access_hash does not change over time. I have not heard of any reports from users claiming that the access_hash has changed.
It is impossible to know for sure, as that would require access to the code the Telegram servers are using for this (and they could change their implementation at any time), but I’ve been working with Telegram for a very long time, and I can confidently say it likely never changes.
Does it mean anything at all? Not by itself. It’s just a random-looking number. However, it is proof that you have access to a particular object, whether that’s an user, channel, or media.
If the access_hash didn’t exist, you could try guessing random IDs, which would for example make it possible to enumerate every user registered to Telegram!:
for user_id in range(1_000_000): await client.get_entity(user_id)
Thankfully, the above code won’t work, because in order to fetch user information, the access_hash needs to be known. But since it’s random, and different for each account, it’s pretty much impossible to guess. Thus, the access_hash keeps your account safe (as long as there’s no way to «reach» it by other means, e.g. via a message forwarded from you, or your participation in public groups).
Is it safe to store in the database and be certain that it’s constant? Yes. Telethon v1 for example stores the access_hash inside its .session file, which lets you use just the id to refer to users and channels, as long as the library has «seen» (and cached) their access_hash before.
from telethon import types CHANNEL = types.InputPeerChannel(channel_id=. access_hash=. )
Does it differ from account to account? Yes. The access_hash is unique to each account. For example, if Account_A fetches Channel_X, it may have id=123, access_hash=456 . But if Account_B fetches the same Channel_X, it may have id=123, access_hash=789 .
This means you cannot fetch an access_hash in Account_A and then try using it in Account_B, as it won’t work (stickers seem to have been an exception at some point).
Every account will see the same ID for the same thing (messages appear to be an exception, but in reality they follow the same rules; they’re duplicated for each account unless they occur inside a channel, so the «same» message can appear to have a different ID.)
Создайте собственного весёлого чат-бота в Telegram с помощью Python: Пошаговое руководство 2023
1. Для начала убедитесь, что на вашем компьютере установлен Python.
2. Затем получите учетные данные для аутентификации Telegram API.
В начале вам нужно будет создать нового бота и получить его shiny API token. Не волнуйтесь, это очень просто! Просто пообщайтесь с ботом BotFather в Telegram, и он поможет вам с реализацией этого процесса. Следуйте этим шагам:
