2014-05-14 49 views
10

我访问Github的API V3,它是工作的罚款,直到我打的速率限制,所以我从Github上设置页面中创建一个个人访问令牌。我试图使用与urllib2的单词和下面的代码:访问Github的API的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

我在做什么错?

+0

差不多的作品! “授权”后,您需要在报价之外的冒号看到:http://stackoverflow.com/questions/5512993/python-httplib2-attributeerror-set-object-has-no-attribute-items – bklynjones

+0

@bklynjones有一个冒号,所以标题是一个字典,你的链接是不相关的。 –

回答

20

我不知道为什么这个问题被标记下来。无论如何,我找到了答案:

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()) 
+0

谢谢!这真的帮助了我! –

+0

我试图从节点做同样的事情。这是我需要的提示。谢谢! –

3

我意识到这个问题是几年老了,但如果有人想同时使用requests.getrequests.post方法与个人访问令牌权威性你也可以选择使用的选项下面的方法:

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

这仅仅是基本的认证as documented in the requests library,这显然可以通过个人访问令牌according to the github api docs.

从文档:

通过OAuth令牌或者,您可以使用个人访问令牌或 OAuth凭证,而不是你的密码。

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

这种方法是 有用的,如果你的工具只支持基本身份验证,但要 利用OAuth访问令牌的安全功能。