Доступ к API Github с использованием Personal Access Token с Python urllib2

Я обращаюсь к API Github v3, он работал нормально, пока не набрал ограничение скорости, поэтому я создал токен личного доступа со страницы настроек Github. Я пытаюсь использовать токен с urllib2 и следующий код:

from urllib2 import urlopen, Request

url = "https://api.github.com/users/vhf/repos"
token = "my_personal_access_token"
headers = {'Authorization:': 'token %s' % token}
#headers = {}

request = Request(url, headers=headers)
response = urlopen(request)
print(response.read())

Этот код работает нормально, если я раскомментирую прокомментированную строку (до тех пор, пока я не удалю ограничение скорости 60 запросов в час). Но когда я запускаю код как есть, я получаю urllib2.HTTPError: HTTP Error 401: Unauthorized

Что я делаю неправильно?

Ответ 1

Я не знаю, почему этот вопрос был отмечен. Во всяком случае, я нашел ответ:

from urllib2 import urlopen, Request
url = "https://api.github.com/users/vhf/repos"
token = "my_personal_access_token"

request = Request(url)
request.add_header('Authorization', 'token %s' % token)
response = urlopen(request)
print(response.read())

Ответ 2

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

request.get(url, data=data, auth=('user','{personal access token}')) 

Это просто базовая аутентификация как описано в библиотеке запросов, которая, по-видимому, вы можете передавать токены доступа к в соответствии с github api docs.

Из документов:

Через токены OAuth Альтернативно вы можете использовать токены доступа или Тоны OAuth вместо вашего пароля.

curl -u username:token https://api.github.com/user

Этот подход полезно, если ваши инструменты поддерживают только базовую аутентификацию, но вы хотите использовать функции защиты токена доступа OAuth.