Github API возвращает 401 из запросов Python, но 200 из curl - PullRequest
0 голосов
/ 10 мая 2019

Я знаю, кажется, довольно повторяющаяся проблема.Из bash и curl я делаю вызовы API Github таким образом

# curl -u myuser https://api.github.com/repos/myuser/somerepo/pulls?state=all -H "Authorization: token randomtokenhere" -d '{"title":"Pull Request develop to master","base":"master", "head":"develop"}'

и работает как шарм.Однако из Python 3 (3.5.2) с json и запросами я получил сообщение об ошибке, несмотря ни на что.

Пример:

user    = "myuser"
password = "sompassword"
url     = "https://api.github.com/repos/myuser/somerepo/pulls?state=all"
token   = "randomtokenhere"
title   = "Pull Request develop to master"
base    = "master"
head    = "develop"
headers = {'Authorization': 'token ' + token}
content = {"title":title,"base":base, "head":head}

req     = requests.post(url,json=json.dumps(content),auth=(user,password),headers=headers)
print("response posts is {} and status code is {}".format(req.text,req.status_code))

ответ на запросы

response posts is {"message":"Must specify two-factor authentication OTP code.","documentation_url":"https://developer.github.com/v3/auth#working-with-two-factor-authentication"} and status code is 401

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

Спасибо

1 Ответ

0 голосов
/ 10 мая 2019

Ну, извините за беспокойство, мой звонок не был правильным.Это на самом деле сработало:

//req       = requests.post(url,json=json.dumps(content),auth=(user,password),headers=headers)
req     = requests.post(url,json=content,auth=(user,token))

Я удалил функцию json.dumps, удалил параметр headers и вместо пароля использовал токен с auth.

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...