19

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?

2
  • Almost works! After 'Authorization' you need a colon outside of the quotations see: stackoverflow.com/questions/5512993/… Commented Jan 12, 2015 at 20:17
  • @bklynjones There is a colon there, so headers is a dict and your link isn't relevant. Commented Jan 12, 2015 at 23:44

2 Answers 2

34

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())
Sign up to request clarification or add additional context in comments.

1 Comment

I was trying to do the same thing from Node. This was the tip I needed. Thanks!
15

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.