2014-05-14 17 views
10

Tôi đang truy cập API Github v3, nó hoạt động tốt cho đến khi tôi đạt đến giới hạn tốc độ, vì vậy tôi đã tạo Mã truy cập cá nhân từ trang cài đặt Github. Tôi cố gắng để sử dụng mã thông báo với urllib2 và đoạn mã sau:Truy cập Github API sử dụng Mã truy cập cá nhân bằng Python 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()) 

Mã này hoạt động ok nếu tôi bỏ ghi chú dòng nhận xét (cho đến khi tôi đạt giới hạn tốc độ 60 yêu cầu mỗi giờ). Nhưng khi tôi chạy mã như tôi nhận được urllib2.HTTPError: HTTP Error 401: Unauthorized

Tôi đang làm gì sai?

+0

Hầu hết các công trình! Sau khi 'Ủy quyền', bạn cần dấu hai chấm bên ngoài các trích dẫn, xem: http://stackoverflow.com/questions/5512993/python-httplib2-attributeerror-set-object-has-no-attribute-items – bklynjones

+0

@bklynjones Có một đại tràng ở đó, vì vậy tiêu đề là một dict và liên kết của bạn không có liên quan. –

Trả lời

20

Tôi không biết tại sao câu hỏi này lại bị đánh dấu. Dù sao, tôi tìm thấy một câu trả lời:

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

Cảm ơn bạn! Điều này thực sự đã giúp tôi! –

+0

Tôi đã cố gắng làm điều tương tự từ Node. Đây là mẹo tôi cần. Cảm ơn! –

3

Tôi nhận ra câu hỏi này là một vài tuổi, nhưng nếu có ai muốn auth với một thẻ truy cập cá nhân đồng thời cũng sử dụng phương pháp requests.getrequests.post bạn cũng có tùy chọn sử dụng phương pháp dưới đây:

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

Đây chỉ là cơ bản xác thực as documented in the requests library, mà dường như bạn có thể vượt qua thẻ truy cập cá nhân để according to the github api docs.

Từ các tài liệu:

Via OAuth Tokens Ngoài ra, bạn có thể sử dụng thẻ truy cập cá nhân hoặc OAuth mã thông báo thay vì mật khẩu của bạn.

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

Cách tiếp cận này là hữu ích nếu công cụ của bạn chỉ hỗ trợ Basic Authentication nhưng bạn muốn tận dụng lợi thế của truy cập OAuth tính năng bảo mật token.

Các vấn đề liên quan