2014-05-14 11 views
10

के साथ व्यक्तिगत एक्सेस टोकन का उपयोग करके गीथब एपीआई एक्सेस करें, मैं गीथब एपीआई v3 तक पहुंच रहा हूं, जब तक मैं दर सीमा को हिट नहीं करता तब तक यह ठीक काम कर रहा था, इसलिए मैंने गिथब सेटिंग पेज से एक व्यक्तिगत एक्सेस टोकन बनाया। मैं और urllib2 के साथ टोकन का उपयोग करने की कोशिश कर रहा हूँ निम्नलिखित कोड:पाइथन 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()) 

इस कोड को ठीक से काम करता है अगर मैं टिप्पणी की लाइन uncomment (जब तक मैं प्रति घंटे 60 अनुरोधों की दर सीमा तक नहीं पहुंच)। लेकिन जब मैं कोड चलाता हूं तो मुझे urllib2.HTTPError: HTTP Error 401: Unauthorized

मैं क्या गलत कर रहा हूं?

+0

लगभग काम करता है! 'प्राधिकरण' के बाद आपको उद्धरणों के बाहर एक कोलन की आवश्यकता है: http://stackoverflow.com/questions/5512993/python-httplib2-attributeerror-set-object-has-no-attribute-items – bklynjones

+0

@bklynjones एक है वहाँ कोलन, तो हेडर एक निर्देश है और आपका लिंक प्रासंगिक नहीं है। –

उत्तर

20

मुझे नहीं पता कि यह प्रश्न क्यों चिह्नित किया गया था। वैसे भी, मैं एक जवाब मिला:

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

धन्यवाद! यह वास्तव में मेरी मदद की! –

+0

मैं नोड से वही काम करने की कोशिश कर रहा था। यह मेरी जरूरत थी। धन्यवाद! –

3

मुझे पता है इस सवाल का कुछ साल पुराना है, लेकिन अगर किसी को करते हुए भी requests.get और requests.post तरीकों का उपयोग कर एक व्यक्तिगत पहुँच टोकन के साथ प्रमाणन करना चाहता है तो आप भी का उपयोग करने का विकल्प होता है नीचे दी गई विधि:

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

यह सिर्फ बुनियादी प्रमाणीकरण as documented in the requests library, जो जाहिरा तौर पर आप डॉक्स से according to the github api docs.

करने के लिए व्यक्तिगत पहुंच टोकन को पारित कर सकते हैं है:

वाया OAuth टोकन वैकल्पिक रूप से, आप व्यक्तिगत पहुँच टोकन का उपयोग कर सकते हैं या OAuth आपके पासवर्ड के बजाय टोकन।

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

यह दृष्टिकोण यदि आपके उपकरण केवल मूल प्रमाणीकरण का समर्थन लेकिन आप OAuth पहुंच टोकन सुरक्षा सुविधाओं का लाभ लेना चाहते हैं उपयोगी है।