<!--
.. title: Telegraph ссылка авторизации
.. slug: telegraph-ssylka-avtorizatsii
.. date: 2024-01-23 23:07:32 UTC+03:00
.. tags: misc, python
.. category: 
.. link: 
.. description: 
.. type: text
-->

# Введение в суть проблемы

В сервисе публикаций [telegraph](https://telegra.ph) в явном виде авторизации нет.
В неявном оно, конечно, есть (иначе было б невозможно
редактировать ранее написанное), но хранится исключительно
в cookies браузера. Грубо говоря, из другого места не получится
редактировать, да и с этого ровно до тех пор пока не
очистишь cookies.

Конечно, всегда можно тупо скопировать картинки и текст
и создать новый пост в [telegraph](https://telegra.ph), но это 
как-то не то...

Разработчики предлагают частично решить проблему 
при помощи 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 так:

```bat
curl "https://api.telegra.ph/getAccountInfo?fields=%%5B%%22auth_url%%22%%5D&access_token=<token>"
```

Под bash так:

```bash
curl "https://api.telegra.ph/getAccountInfo?fields=%5B%22auth_url%22%5D&access_token=<token>"
```
где вместо `<token>` следует вписать скопированный токен.

Скрипт напечатает ссылку для авторизации, которую уже нужно ввести
в том, браузере, который надо авторизовать.


Список постов можно посмотреть так:

```bash
curl "https://api.telegra.ph/getPageList?access_token=<token>"
```

Вообще есть [Описание telegra.ph API](https://telegra.ph/api) и там можно, например,
выводить статистику просмотров...

## Использование python

Установить пакет `telegraph` ( вот [описание](https://github.com/python273/telegraph) ).

```bash
pip3 install telegraph
```

Создать простой скрипт для получения ссылки авторизации (*токен* тоже понадобится).

```python
from telegraph import Telegraph

telegraph = Telegraph(access_token="<token>")
r = telegraph.get_account_info(fields=['auth_url'])
print(r)

```
