使用Python urllib2的个人访问令牌访问Github API

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)


Abe*_*ler 9

我意识到这个问题已经存在了几年,但是如果有人想要使用个人访问令牌同时使用requests.getrequests.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访问令牌安全功能,则此方法很有用.