Перейти к главному содержимому

Telegraph ссылка авторизации

Введение в суть проблемы

В сервисе публикаций telegraph в явном виде авторизации нет. В неявном оно, конечно, есть (иначе было б невозможно редактировать ранее написанное), но хранится исключительно в cookies браузера. Грубо говоря, из другого места не получится редактировать, да и с этого ровно до тех пор пока не очистишь cookies.

Конечно, всегда можно тупо скопировать картинки и текст и создать новый пост в telegraph, но это как-то не то...

Разработчики предлагают частично решить проблему при помощи telegram-бота @Telegraph. Бот @Telegraph позволяет авторизовываться в Telegraph через учётную запись Telegram. Фактически он авторизует браузер, а так как telegram можно запускать на разных устройствах, то можно авторизовать (через этого же бота) браузеры на разных устройствах и это будет один и тот же аккаунт.

Проблема решена! Но не совсем... Бывает нужно авторизовать браузер другого (удаленного) человека. Или где-то нельзя (или не хочется) запускать telegram...

Для этого случая предусмотрено формирование ссылки авторизации, которая действует (суля по описанию) 5 минут, и по ней можно авторизовать браузер. Сложности начинаются с того, как её сформировать. Бот почему-то не умеет (зато закрывать лишние сеансы/сессии бот прекрасно умеет).

А ещё у telegra.ph есть web-api и там авторизация ведётся по access_token. То есть, базовым элементом авторизации является access_token, только явно его не показывают.

Пора сводить всё это вместе и решить уже проблему генерации ссылки.

Получение токена

Обычно все описания пишут, что надо создать аккаунт и тогда API вернет токе нового аккаунта. У нас же задача подцепить уже существующий аккаунт.

Для начала надо иметь авторизованный (лучше через бота) браузер.

В браузере надо открыть средства разработчика, загрузить https://telegra.ph и из Application/Cookies скопировать tph_token (набор букв и цифр).

Получаем ссылку авторизации

Можно использовать curl, можно использовать python.

Использование curl

После этого можно (уже на любом устройстве, не обязательно авторизованном) сделать запрос ссылки для авторизации. Под Windows так:

curl "https://api.telegra.ph/getAccountInfo?fields=%%5B%%22auth_url%%22%%5D&access_token=<token>"

Под bash так:

curl "https://api.telegra.ph/getAccountInfo?fields=%5B%22auth_url%22%5D&access_token=<token>"

где вместо <token> следует вписать скопированный токен.

Скрипт напечатает ссылку для авторизации, которую уже нужно ввести в том, браузере, который надо авторизовать.

Список постов можно посмотреть так:

curl "https://api.telegra.ph/getPageList?access_token=<token>"

Вообще есть Описание telegra.ph API и там можно, например, выводить статистику просмотров...

Использование python

Установить пакет telegraph ( вот описание ).

pip3 install telegraph

Создать простой скрипт для получения ссылки авторизации (токен тоже понадобится).

from telegraph import Telegraph

telegraph = Telegraph(access_token="<token>")
r = telegraph.get_account_info(fields=['auth_url'])
print(r)