Email or username:

Password:

Forgot your password?
Top-level
Moana Rijndael 🍍🍕

@drq не надо. Авторизация машины с машиной по логину/паролю нафиг не нужна

23 comments
Moana Rijndael 🍍🍕

@drq по хорошему человеков тоже надо нормально авторизовать, но они уже привыкли....

Dr. Quadragon ❌

@mo Пароль храниться не будет.

Moana Rijndael 🍍🍕

@drq ...и смысл тогда? Ты просто реимплементируешь получение токена, которое уже есть :blobcatgooglyholdingitsheadinitshands:

Dr. Quadragon ❌

@mo Если есть, но руками - значит нет.

Moana Rijndael 🍍🍕

@drq всё равно придется руками вбить логпасс в бота

Dr. Quadragon ❌ replied to Moana Rijndael 🍍🍕

@mo Ну правильно. Один раз. А не открывать браузер, искать там в настройках настроек чего-то одному Сварогу известное.

А дальше - токен.

Moana Rijndael 🍍🍕 replied to Dr. Quadragon ❌

@drq ладно, кто я такая чтобы запрещать тебе ебаться :blobcatgooglyshrug:

D:\side\ replied to Dr. Quadragon ❌

@drq чтоб максимально беспилотно и без пароля, оно должно работать примерно так:
0. Спрашивает у тебя адрес инстанса
1. Делает RegisterApp и куда-то персистентно сохраняет результат (там вроде никакого входа на инстанс не требуется?)
2. С помощью client_id и адреса инстанса генерит тебе ссылку на /oauth/authorize — которую ты открываешь в браузере сам от нужного пользователя и получаешь код
3. Спрашивает у тебя вышеприведённый код, обменивает его на токен и его тоже персистентно сохраняет
3.1415… ???
4. Профит!

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

Моя ленивая жопа с этим бы, наверное, справилась. Как заядлый любитель "docker-compose up -d и похерачили" не люблю интерактивные сеансы настройки, но здесь это выглядит как путь наименьшего сопротивления.

@mo

@drq чтоб максимально беспилотно и без пароля, оно должно работать примерно так:
0. Спрашивает у тебя адрес инстанса
1. Делает RegisterApp и куда-то персистентно сохраняет результат (там вроде никакого входа на инстанс не требуется?)
2. С помощью client_id и адреса инстанса генерит тебе ссылку на /oauth/authorize — которую ты открываешь в браузере сам от нужного пользователя и получаешь код
3. Спрашивает у тебя вышеприведённый код, обменивает его на токен и его тоже персистентно сохраняет
3.1415… ???

Dr. Quadragon ❌ replied to D:\side\

@dside У меня примерно так и сделано.

Что интересно: если перед этим не скормить клиенту логин с паролем, он перебрасывает на промежуточную страничку типа "а вы точно уверены, что хотите вот это вот позволить?".

Мне интересно, а может он в таком свете и строку эту дебильную сможет сам взять?... Но да ладно, это уже мечты. Главное доступ есть, конфиг сохраняется в жсон, загружается из него, и ленту домашнюю кажет.

Теперь бы получить стрим этой самой ленты - чтобы не поллить по таймауту.

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq гипотетически да, его можно научить, если использовать в процессе получения кода redirdct_uri, который ведёт в приложение.

Но для этого приложение должно быть доступно из браузера хотя бы с хоста с этим самым браузером. И нужно тащить в приложение вебсервер только ради вот этого вот одного запроса. А этому вебсерверу нужен порт. И что-то эта идея кажется всё менее привлекательной…

@mo

Dr. Quadragon ❌ replied to D:\side\

@dside Короче, ладно, по хуям, скопипастит - не развалятся.

@mo

Dr. Quadragon ❌ replied to D:\side\

@dside погоди, а сервер нахрена? По идее, нужен курл с авторизованной в инстатнсе кукой.

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq ты про получение кода напрямую приложением спрашивал.
Вот для этого.
Поскольку ты там особое значение передаёшь, в конце процесса Мастодон показывает тебе красивую страничку с кодом.
А если вместо этого значения передать урл, то Мастодон вместо страницы с кодом приклеит к этому урлу ?code=Х и отдаст туда редирект.
И вебсервер нужен, чтобы этот редирект поймать.

@mo

@drq ты про получение кода напрямую приложением спрашивал.
Вот для этого.
Поскольку ты там особое значение передаёшь, в конце процесса Мастодон показывает тебе красивую страничку с кодом.
А если вместо этого значения передать урл, то Мастодон вместо страницы с кодом приклеит к этому урлу ?code=Х и отдаст туда редирект.
И вебсервер нужен, чтобы этот редирект поймать.

Dr. Quadragon ❌ replied to D:\side\

@dside Хм. Ну, Го, кстати, умеет по-бырику раскручивать веб-сервер.

Но ладно. А что мне мешает просто по этому урлу с особым значением сходить курлом и взять код?

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq если ты /oauth/authorize в залогиненном браузере открываешь, то этот же браузер по редиректу и пойдёт.

Поэтому адрес назначения в редиректе должен вести в приложение, чтобы приложение могло достать значение кода самостоятельно.

А иначе в этой затее нет смысла.
Если редирект будет на мёртвую ссылку, то браузер успешно пойдёт и по ней. И код можно будет скопировать из адресной строки, если хочется, но со специальной страницы Мастодона это делать всё же удобнее.

А если ты хочешь и чтоб на /oauth/authorize приложение сходило само, это ему нужны будут логин+пароль или сессия, чего ты вроде как хочешь избежать.

@mo

@drq если ты /oauth/authorize в залогиненном браузере открываешь, то этот же браузер по редиректу и пойдёт.

Поэтому адрес назначения в редиректе должен вести в приложение, чтобы приложение могло достать значение кода самостоятельно.

А иначе в этой затее нет смысла.
Если редирект будет на мёртвую ссылку, то браузер успешно пойдёт и по ней. И код можно будет скопировать из адресной строки, если хочется, но со специальной страницы Мастодона это делать всё же удобнее.

Dr. Quadragon ❌ replied to D:\side\

@dside Я хочу избежать их *хранения*. Ну, а так - это единственные реквизиты, доступные пользователю, пусть введет разок.

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq тогда проще спрашивать прямо логин с паролем и делать запрос токенов с grant_type: password, что и делает Authenticate. Выглядит он работоспособным.

И никакая возня с /oauth/authorize и authorization code в процессе не появляется вообще.

@mo

Dr. Quadragon ❌ replied to D:\side\

@dside Но тогда их придется *хранить*. И вот этого я хочу избежать.

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq да нет, не придётся. Ты ж по итогам процедуры всё равно получишь access token и тебе точно так же его сохранять.

@mo

Dr. Quadragon ❌ replied to D:\side\

@dside Пробовал, не работает такое :)

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq должно бы. Что останавливает?

@mo

Dr. Quadragon ❌ replied to D:\side\

@dside Говорит bad grant при попытке логина с этим токеном.

@mo

D:\side\ replied to Dr. Quadragon ❌

@drq так с ним не надо логиниться, он готов к применению. Создать клиент, где токен присвоен в Config.AccessToken, и поехал.

@mo

Go Up