Как вытащить auth keyhex в Телеграме

В начале февраля Павел Дуров анонсировал, что у Telegram появился так называемый Telegram Login Widget. Проще говоря, теперь любой желающий может встроить авторизацию на своем сайте через Telegram, наряду с уже удобными способами входа через привычные для всех Google, Twitter, Facebook и так далее.

В этой заметке я хочу рассказать и наглядно показать как это сделать, используя Django. Исходный код свободно доступен в моем репозитории на GitHub. Пользуйтесь на здоровье.

Те, кто уже имеет опыт работы с Django Framework, знают, что он предоставляет готовую User модель для авторизации, более того, ее очень легко расширить или написать свою. Я решил пойти другим путём, дабы не городить своих велосипедов, воспользовался готовым и хорошо зарекомендовавшим себя пакетом для авторизации в различных сервисах — python-social-auth. Для тех, кто не в курсе, social-auth это набор готовых библиотек для авторизации через такие сайты как Twitter, Facebook, Instagram, Google, VK и многие других. Проект разбит на модули, где основным является social-core, там хранится набор т.н. бэкендов для авторизации. Помимо social-core, есть ряд пакетов для конкретных фреймворков. Для Django это social-app-django, для Tornado соответственно social-app-tornado и так далее. Покрыты практически все известные веб-фрейморки для Python. Так вот к чему это я?

Решил я внести свой вклад в развитие Open Source, и написал backend для авторизации через Telegram в основной модуль social-core. Готовый к слиянию Pull Request можно посмотреть здесь. Правда загвоздка в том, что автор проекта не спешит его сливать в master ветку, на сообщения не реагирует, поэтому пример кода будет базироваться на моем форке social-core. Будем надеяться, что PR примут. Вы можете внести свой вклад, оставив комментарий автору проекта в Issue, который я открыл по случаю готового PR.

Мой проект будет использовать Python 3.6 и Django 2.0.3. Если вам не нравится Django, то вы без труда можете использовать python-social-auth с любым другим фреймворком для реализации авторизации через Telegram для своего сайта.

Создание бота Telegram

Настройка параметров

npm install ngrok -g

Задача js-скрипта, сгенерированного на странице настроек, показать на сайте кнопку для входа. Вот такую:

Настройки можно задать на официальной странице Telegram. Они простые, разобраться нетрудно. Но обратите внимание на 2 параметра:

В Authorization Type необходимо выбрать способ авторизации пользователя:

  • Callback. Вызов произвольной JS функции после авторизации пользователя. Если выбрать этот параметр, то в скрипте виджета появится пример такой функции, вызывающий alert с именем, фамилией, псевдонимом и id.
  • Redirect to URL. Стандартный способ авторизации через редирект на заданный URL. Именно его в примере я и буду использовать. Сюда позже укажем URL через домен, полученный с помощью ngrok.
Еще по теме:  Что такое Telegram канал

Создаем веб-приложение

Итак, склонируйте мой репозиторий. Для проекта желательно создать отдельное виртуальное окружения, чтобы не засорять системный Python и не хапнуть конфликтных ситуаций между зависимостями (а вдруг?). Установите все зависимости из requirements.txt.

Обратите внимание, что в моем проекте-шаблоне в качестве базы данных используется SQLite 3, это сделано для простоты первичной настройки и демонстрации. Следом выполните команду migrate:

python manage.py migrate

Это необходимо сделать для создания таблиц в базе данных для корректной работы приложения.

Теперь запускаем проект привычной командой:

python manage.py runserver

В отдельном окне терминала получим внешний адрес для сайта путем создания туннеля через утилиту ngrok.

ngrok http 8000

Теперь возвращаемся на страницу настройки виджета, где необходимо задать Redirect URL. Полный адрес будет выглядеть вот так:

Возникает вопрос, а как я получил такой путь? Дело в том, что путь /auth/ был задан в urls.py моего проекта для модуля urls.py пакета social_django:

urlpatterns = [ path(‘admin/’, admin.site.urls), path(‘auth/’, include(‘social_django.urls’, namespace=’social’)), path(‘profile/’, TemplateView.as_view(template_name=’profile.html’), name=’profile’), path(», TemplateView.as_view(template_name=’login.html’)), ]

А /complete/telegram это уже стандартный шаблон для редиректа после авторизации в бэкенд-сервисе.

# код social_django.urls urlpatterns = [ # authentication / association url(r’^login/(?P[^/]+)$’.format(extra), views.auth, name=’begin’), url(r’^complete/(?P[^/]+)$’.format(extra), views.complete, name=’complete’), # disconnection url(r’^disconnect/(?P[^/]+)$’.format(extra), views.disconnect, name=’disconnect’), url(r’^disconnect/(?P[^/]+)/(?Pd+)$’ .format(extra), views.disconnect, name=’disconnect_individual’), ]

Более подробно о пакете python-social-auth можно почитать в документации.

Теперь полученный на странице настроек виджета JS-код копируйте в шаблон login.html (вместо моего кода вставьте туда свой). После открывайте браузер и заходите на страницу e019b6e6.ngrok.io (помните, что ваш домен может отличаться).

Если вы всё сделали правильно, то увидите примерно вот такую картинку:

Смело кликайте на виджет, разрешите доступ на авторизацию, и при успешном входе вас перекинет на страницу profile

Поздравляю! Вы успешно авторизовались на сайте через Telegram. Теперь у вас есть время, чтобы разобраться как это работает, посмотрите код моего проекта. В основном необходимо взглянуть на settings.py, всю “грязную” работу за вас делают пакеты social-auth и social-app-django. Если вам интересно как работает процесс авторизации, то изучите мой Pull Request и официальный гайд от Telegram.

Интересные записи:

  • Django Channels: работа с WebSocket и не только
  • Обзор Python 3.9
  • Почему Python?
  • Руководство по работе с HTTP в Python. Библиотека requests
  • Pyenv: удобный менеджер версий python
  • Что нового появилось в Django Channels?
  • Работа с MySQL в Python
  • Celery: начинаем правильно
  • Введение в logging на Python
  • FastAPI, asyncio и multiprocessing
  • Разворачиваем Django приложение в production на примере Telegram бота
  • Python-RQ: очередь задач на базе Redis
  • Как написать Telegram бота: практическое руководство
  • Введение в pandas: анализ данных на Python
  • Работа с PostgreSQL в Python
  • Django, RQ и FakeRedis
  • Итоги первой встречи Python программистов в Алматы
  • Обзор Python 3.8
  • Интеграция Trix editor в Django
  • Участие в подкасте TalkPython
  • Строим Data Pipeline на Python и Luigi
  • Видео презентации ETL на Python

Источник: khashtamov.com

Не удалось извлечь Auth-код во время авторизации

У меня есть следующий код, который перенаправляет пользователя на URL-адрес auth, в котором после предоставления авторизации возвращается URL-адрес обратного вызова, содержащий код auth. (Нет всплывающего окна, авторизация выполняется в том же окне)

Еще по теме:  Удалить учетную запись Telegram без входа в Telegram

authStart(e) e.preventDefault();
var options = client_id: ‘some-id’,
scopes: [«user:email», «notifications»]
>;
var loginUrl = ‘https://github.com/login/oauth/authorize?’;
var authUrl = loginUrl + ‘client_id=’ + options.client_id + ‘

window.open(authUrl, «_parent»);

var authCode = this.getAuthCode(window.location.href);
console.log(authCode);

getAuthCode(url) var error = url.match(/[]+)/);
if (error) throw ‘Error getting authorization code: ‘ + error[1];
>
return url.match(/[
>,

Запустив это, я могу успешно получить URL-адрес обратного вызова в окне, но не смог получить код аутентификации. Я думаю, что функция getAuthCode вызывается сразу после инструкции window.open, и поскольку окно полностью не загружено, нет ничего, что можно было бы получить. Что нужно сделать, чтобы этого избежать. Я использую ReactJS и узел в случае, если это помогает.

спросил(а) 2020-02-27T18:41:28+03:00 3 года, 7 месяцев назад

Источник: progi.pro

Как купить имя пользователя Telegram на площадке Fragment

Как купить имя пользователя Telegram на площадке FragmentКак купить имя пользователя Telegram на площадке Fragment

27 октября Павел Дуров сообщил о запуске специальной платформы Fragment, которая позволяет покупать и продавать юзернеймы Telegram в рамках аукционов.

Речь об именах, которые можно использовать для учётных записей, групп и каналов. На первом этапе делать свои ставки позволили по самым уникальным юзернеймам, стоимость которых уже может превышать 300 000 долларов. Но основная цель — дать всем желающим возможность закреплять за собой право собственности на свои юзернеймы:

Впервые в истории социальных сетей установлен честный и прозрачный рынок юзернеймов. Наконец-то люди будут владеть своими адресами в социальных сетях, причём под защитой неизменного реестра децентрализованной сети блокчейнов, — Павел Дуров.

Это говорит о возможности выкупать ценные для себя имена пользователей или же, наоборот, выставлять на продажу ненужные. Важно то, что все имена размещаются в блокчейне TON, поэтому никто не сможет оспорить права собственности их владельцев. В простой инструкции рассказываем, что нужно сделать для того, чтобы принять участие в аукционе юзернеймов.

Покупаем криптовалюту TON

Его можно использовать как криптовалютный кошелёк по умолчанию. Он привязан к вашему аккаунту Telegram. Всё управление кошельком в боте можно осуществлять по команде /menu.

  • После активации кошелька Wallet открывать сам кошелёк можно в боте по кнопке «Открыть Wallet»;
  • Перейдите в настройки бота по команде /menu и нажмите на соответствующую кнопку, чтобы добавить его в меню вложений;

Это позволит вам удобно пользоваться Wallet и отправлять средства человеку, не покидая диалог.

  • Перейдите в боте по кнопке «P2P-маркет»;
  • В открывшемся меню нажмите «Купить у пользователей»;
  • Вверху настройте поиск по фильтрам — выберите криптовалюту TON, валюту покупки (например, RUB) и метод оплаты (например, Тинькофф);
  • Выберите наилучшее, по вашему мнению, доступное предложение;

Список предложений в P2P-маркете по умолчанию группируется от самой низкой цены за 1 Toncoin, которую указывают продавцы, до самой высокой.

  • Введите количество Toncoin, которые хотите приобрести;

Обращайте внимание на лимиты — купить больше или меньше монет, чем указал продавец, не получится.

  • Создайте сделку и дождитесь готовности продавца к сотрудничеству;

  • Совершите платёж по указанным реквизитам после принятия продавцом сделки;
  • Подтвердите, что произвели перевод средств;
  • Дождитесь подтверждения об оплате со стороны продавца и получите свои Toncoin.
Еще по теме:  Если заблокировать человека в телефоне сможет ли он писать в Телеграмме

Создаём кошелёк в Tonkeeper

Tonkeeper — многофункциональное развивающееся приложение, в котором помимо хранения Toncoin доступны просмотр курса, изменение валюты отображения курса, изменение адреса, удобные механизмы отправки и получения монет, хранение и просмотр своих NFT.

  • Заходим на официальный сайт кошелька и загружаем его на своё мобильное устройство — на Android или iOS;
  • Запускаем приложение, начинаем процесс создания кошелька: Tonkeeper предоставит секретный ключ — список из 24 слов, которые используются для авторизации;

ВАЖНО: Данные слова де-факто являются вашим паролем, если вы потеряете их, то утратите доступ к вашему кошельку — никому и никогда не передавайте фразу! После утраты секретных слов восстановить кошелёк будет невозможно, поэтому отнеситесь к их запоминанию серьёзно. Важны не только сами слова, но и их номерной порядок.

  • Проходим проверку: приложение попросит ввести несколько слов из списка — после этого кошелёк готов к работе.

Переводим Toncoin в Tonkeeper

Принимаем участие в аукционе Fragment

  • Заходим на Fragment, авторизовываемся и через Telegram, и через кошелек Tonkeeper;
  • Выбираем юзернейм, который хотим приобрести;
  • Нажимаем кнопку «Place bid», выбираем сумму своей ставки и нажимаем «Place a . »;

Cайт автоматически покажет сумму с минимальным шагом: например, если последняя ставка на 160 000 TON, а указанный шаг — 8000 TON, то минимум, который сможете предложить — 168 000 TON.

  • Открываем Tonkeeper, нажимаем на иконку сканера в правом верхнем углу и сканируем QR-код, который отобразился в Fragment;

Важно, чтобы на балансе было чуть больше Toncoin, нежели стоимость юзернейма. Нельзя забывать про комиссии в сети — они незначительные, примерно 0,01 TON.

  • У вас открывается окошко подтверждения транзакции — нажимаем «подтвердить»;

В случае, если вашу ставку перекрыли новой, вам придёт оповещение в Tonkeeper. В Telegram вы можете получить его в случае, если оформили подписку на оповещения о юзернейме через специальный бот — Fragment Auction Alerts.

  • После завершения аукциона на юзернейм на ваш кошелёк в Tonkeeper будет переслан NFT — в уведомлении вы увидите свой новый юзернейм, он и квалифицируется как NFT.

Привязываем новый юзернейм к Telegram

  • Заходим на Fragment, авторизовываемся через Telegram и кошелек Tonkeeper;
  • Находим новый раздел «My Assets» — там вы увидите свой новый юзернейм;
  • Нажимаем «Assign to Telegram»: открывается список с выбором — ваша учётная запись, ваши группы и каналы;
  • Делаем выбор, к чему привязать юзернейм (например, к вашему аккаунту) и нажимаем кнопку «Assign»;
  • Если выбрали привязку юзернейма к аккаунту, заходим в настройки Telegram.
  • Переходим в пункт редактирования профиля и раздел «Имя пользователя» — тут отобразятся ваши юзернеймы, вы можете изменять порядок их отображения или скрывать.

Примерно таким же образом происходят действия и с привязкой новых юзернеймов к группам и каналам. Обратите внимание, что у вас всегда должны быть самые свежие версии Telegram и Tonkeeper.

Источник: kod.ru

Рейтинг
( Пока оценок нет )
Загрузка ...