Frage

I am accessing the Github API v3, it was working fine until I hit the rate limit, so I created a Personal Access Token from the Github settings page. I am trying to use the token with urllib2 and the following code:

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

This code works ok if I uncomment the commented line (until I hit the rate limit of 60 requests per hour). But when I run the code as is I get urllib2.HTTPError: HTTP Error 401: Unauthorized

What am I doing wrong?

War es hilfreich?

Lösung

I don't know why this question was marked down. Anyway, I found an answer:

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

Andere Tipps

I realize this question is a few years old, but if anyone wants to auth with a personal access token while also using the requests.get and requests.post methods you also have the option of using the method below:

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

This is just basic authentication as documented in the requests library, which apparently you can pass personal access tokens to according to the github api docs.

From the docs:

Via OAuth Tokens Alternatively, you can use personal access tokens or OAuth tokens instead of your password.

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

This approach is useful if your tools only support Basic Authentication but you want to take advantage of OAuth access token security features.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top