2013-07-12 26 views
6

istemek için kullanma Kullanıcı adı ve parola kullanarak python'da Github api jetonu elde edebilirim ancak POST/DELETE/PATCH istemek için bu API-Token'i kullanamıyorum.python'da github api belirtecini

Github API-Tokens'i herhangi bir istekte bulunmak için nasıl kullanırız. eg için i

#i'm providing username and API-Token in headers like  
self.header = {'X-Github-Username': self.username, 
       'X-Github-API-Token': self.api_token     
       } 
#then requesting(post) to create a gist 
r = requests.post(url, headers=headers) 

isteme '... hbnajkjanjknjknh23b2jk2kj2jnkl2' API Jetonu diyelim şimdi

var Ama hep Bad Crediantials mesajla 401 error alıyorum. İlk olarak şifreyi

+0

"selfsession.headers ['Authorization'] =" auth = (kullanıcı adı, parola) " – softvar

cevap

12

girmeden API-Simgelerinizi kullanmak için uygun yolu nedir

, ben API için bir sarıcı kullanarak öneriyoruz. API'sini takdir ettiğiniz bir sarıcı bularak burada basitleştirilebilecek pek çok soru soruyorsunuz. Python here'da yazılmış bir paket listesi var.

Sorunuzu gerçekten yanıtladığınıza gelince, GitHub belgelerinin, Authorization header'u göndermeniz gerektiği oldukça açıktır. Çağrı aslında bu şekilde görünecektir:

self.headers = {'Authorization': 'token %s' % self.api_token} 
r = requests.post(url, headers=self.headers) 

Eğer istek ve bir sınıf kullanıyorsunuz gibi görünüyor beri, bir tavsiyede cesaretli olabilir? API için bir müşteri yapmak gibi bir şey yaptığınızı varsayalım. Bir sınıf şöyle olabilir:

class GitHub(object): 
    def __init__(self, **config_options): 
     self.__dict__.update(**config_options) 
     self.session = requests.Session() 
     if hasattr(self, 'api_token'): 
      self.session.headers['Authorization'] = 'token %s' % self.api_token 
     elif hasattr(self, 'username') and hasattr(self, 'password'): 
      self.session.auth = (self.username, self.password) 

    def call_to_the_api(self, *args): 
     # do stuff with args 
     return self.session.post(url) 

Oturum nesne sizin için kimlik doğrulama ilgilenir (ya jeton veya kullanıcı adı ve şifre kombinasyonu ile).

Ayrıca, API sarmalayıcı ihtiyaçlarınız için github3.py kullanmaya karar verirseniz, bunun için burada bir etiket vardır.

+0

yerine' requests.post (...., auth = api_token) 'gibi bir şeyi kullanamıyoruz = 'token% s'% self.api_token' ve 'auth = kullanma (kullanıcı adı, şifre)' içinde 'requests.post()', '{u'message': u'Not Found '} ile yanıt veriyor}} ' – softvar

+0

Bunun ile 'requests.post' kullanmıyorsunuz,' self.session.post' kullanıyorsunuz. –