Прогресс ускоряется в StackMode, клиент Emacs для StackExchange, и теперь мы должны иметь возможность сделать аутентифицированные запросы API для продолжения тестирования. (Предел 300-запросов начинает ограничивать количество тестов, которые я могу выполнить за один день.)
Отказ от ответственности: Я мало что знаю о веб-разработке; это одна из областей, над которыми я работаю профессионально. Пожалуйста, извините меня, если я злоупотребляю любыми условиями и не стесняюсь исправить меня в комментариях. Спасибо!
API StackExchange использует аутентификацию OAuth 2.0. Поскольку это локальное клиентское приложение с авторизацией клиента. У меня есть следующие сведения, предоставленные мне StackExchange:
- Идентификатор клиента
- Клиентский секрет (не должен делиться, поэтому в этом потоке не нужно)
- Key
- Описание (не связанное с OAuth)
- Домен OAuth
- Веб-сайт приложения (не связанный с OAuth)
- Значок приложения (не связанный с OAuth)
- Сообщение о публикациях в стеке (не связанное с OAuth)
со следующими дополнительными сведениями:
- Поток клиентской стороны включен
- Доступен OAuth Redirect Uri
Чтобы сохранить любой ответ как общий, так и явный, вы можете использовать my-client-id
(и т.д.) для значений. Фактические значения - те, которые, я думаю, согласны, - доступные на GitHub.
Я изучаю это в течение половины дня, но я не очень-то ближе к решению, чем когда начал. Самое близкое, что я получил, это небольшой фрагмент кода:
(require 'oauth2) ; available via GNU ELPA
(defconst stack-auth-token
(make-oauth2-token
:client-id stack-auth--client-id
:client-secret stack-auth--key))
;; this doesn't use the above, but it does open an auth page on SE
(oauth2-auth-and-store
"https://stackexchange.com/oauth/dialog"
nil nil
stack-auth--client-id
stack-auth--key
"https://stackexchange.com/oauth/login_success")
Единственное, что я могу предложить для запроса OAuth2 (сверху), по-видимому,
- Идентификатор клиента
- Key
- Домен OAuth
Как я могу реализовать этот поток в Elisp?
Текущий "поток"
- Выполнить
oauth2-auth-and-store
с соответствующими наборами переменных. -
Открытие
- Нажмите "Утвердить"
-
Открытие
с этим URL
-
Приложение успешно добавлено
-
Но у меня нет кода для предоставления
oauth2
В дополнение к ответам, PR также приветствуются, конечно.