Самая простая авторизация github для приложения командной строки?

Я написал короткое приложение для командной строки, чтобы автоматизировать некоторые скучные части моей работы, связанные с github. Вполне вероятно, что этот служебный сценарий будет использоваться мной в 95% случаев и в 5% случаев другим разработчиком - его не нужно сильно обрабатывать, и я могу самостоятельно обрабатывать секреты аутентификации, поэтому я просто хочу создайте один секрет, который никогда не изменится, и покончите с этим.

Скрипт работает отлично, за исключением того, что в последней строке мне нужно сделать ровно один вызов API github с методом POST, и я считаю, что аутентификация не выполняется, так как я получаю результат 404, когда использую POST, но я этого не делаю. t когда я пробую GET.

Вот подробности.

Я использую популярную библиотеку Python requests, с которой я хорошо знаком.

На GitHub я создал приложение OAuth и скопировал идентификатор клиента, который будет проверен в коде, и секрет клиента, который считывается во время выполнения из файла, который не зарегистрирован.

В соответствии с эта документация я затем делаю запрос на создание новой версии, передавая аутентификацию следующим образом:

url = 'https://api.github.com/repos/rec/testy/releases'
data = {
    'tag_name': 'v1.0.1',
    'target_commitish': 'master',
    'name': 'name',
    'body': 'release body',
    'client_id': CLIENT_ID,
    'client_secret': CLIENT_SECRET,
}

res = requests.post(url, data=data)
print(res, res.text)

Если я заменю requests.post на requests.get, я получу ожидаемую информацию о выпусках, поэтому я считаю, что выполняю аутентификацию неправильно.

Какой самый простой способ настроить мой запрос, чтобы заставить эту работу работать, учитывая, что это в основном одноразовый сценарий для личного использования?

Я не вижу ссылки на документацию github, которой вы поделились с поддержкой PUT, хотя она позволяет использовать POST или PATCH (оба из которых поддерживаются запросами). Вы уверены, что не получаете сообщение об ошибке, потому что метод PUT не существует?

Anshul Goyal 20.04.2018 13:28

Ах, я набрал put вместо post. Спасибо за поправку, исправлю.

Tom Swirly 20.04.2018 13:29

Это сделано, и я зафиксировал здесь код: github.com/rec/BiblioPixel/blob/stack-overflow/scripts/…, чтобы вы могли видеть, что я на самом деле запускаю.

Tom Swirly 20.04.2018 13:33
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создайте токен: https://github.com/settings/tokens В вашем блоке данных используйте 'token': <YOUR_TOKEN>

Вместо client_id и client_secret. В качестве альтернативы см. Это: https://github.com/PyGithub/PyGithub

Другие вопросы по теме