使用Python urllib2通过个人访问令牌访问Github API
我正在使用Github的API v3,之前一切都很顺利,直到我达到了请求限制。于是我在Github的设置页面创建了一个个人访问令牌(Personal Access Token)。现在我想用这个令牌和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
的错误。
我哪里做错了呢?
2 个回答
15
我知道这个问题已经有几年了,但如果有人想用个人访问令牌来进行身份验证,同时又想使用 requests.get
和 requests.post
方法,你可以试试下面的方法:
request.get(url, data=data, auth=('user','{personal access token}'))
这其实就是基本的身份验证,在requests库的文档中有说明,根据GitHub API的文档,你可以传递个人访问令牌。
根据文档:
通过OAuth令牌,你可以使用个人访问令牌或 OAuth令牌来代替你的密码。
curl -u username:token https://api.github.com/user
这种方法在你的工具只支持基本身份验证时特别有用,但你又想利用OAuth访问令牌的安全特性。
34
我不知道这个问题为什么被降级了。无论如何,我找到了解答:
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())