Hol*_*rel 15 python api authorization github urllib2
我正在访问Github API 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())
Run Code Online (Sandbox Code Playgroud)
如果我取消注释注释行(直到我达到每小时60个请求的速率限制),此代码可以正常工作.但是当我按原样运行代码时urllib2.HTTPError: HTTP Error 401: Unauthorized
我究竟做错了什么?
Hol*_*rel 27
我不知道为什么这个问题被记下来了.无论如何,我找到了答案:
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())
Run Code Online (Sandbox Code Playgroud)
我意识到这个问题已经存在了几年,但是如果有人想要使用个人访问令牌同时使用requests.get和requests.post方法,你也可以选择使用以下方法:
request.get(url, data=data, auth=('user','{personal access token}'))
Run Code Online (Sandbox Code Playgroud)
这只是请求库中记录的基本身份验证,显然您可以根据github api文档传递个人访问令牌.
来自文档:
通过OAuth令牌或者,您可以使用个人访问令牌或 OAuth令牌代替您的密码.
curl -u username:token https://api.github.com/user如果您的工具仅支持基本身份验证,但您希望利用OAuth访问令牌安全功能,则此方法很有用.