2016-12-01 3 views
0

kann ich nicht bekommen Token Ich versuche, die Lyft Entwickler API zu verwenden. Ich habe eine neue App erstellt, um die Client-ID und den Client geheim zu halten. Ich befolge die Schritte in https://developer.lyft.com/docs/authentication, um ein Zugriffs-Token in meinem Python-Code zu erhalten. Aber ich bekomme immer den Fehler "Unauthorized Client". Kann jemand auf meinen Fehler hinweisen?Token für Lyft Api

def __init__(self): 
    self.client_id = 'MY_ID' 
    self.client_secret = 'MY_SECRET' 

    # obtain access token 
    self.token = self.__generate_token__() 

    # define variables to be used in the request parameters 
    token_val = 'Bearer '+self.token 
    self.headers = {'Authorization':token_val} 

def __generate_token__(self): 
    url = 'https://api.lyft.com/oauth/token' 

    # define request parameters 
    payload = {"Content-Type": "application/json", 
       "grant_type": "client_credentials", 
       "scope": "public"} 
    # request data 
    res = requests.post(url, 
         data = payload, 
         auth = (self.client_id, self.client_secret)) 
    # extract the token from the response 
    token = res.json()['access_token'] 
    return token 

Antwort

0

Dies ist ein funktionierendes Beispiel für einen Java-Client

https://github.com/yschimke/oksocial/blob/175bdbf66e312d8bdf79183a140c2c5270329cf2/src/main/java/com/baulsupp/oksocial/services/lyft/LyftClientAuthFlow.java

Die Hauptsache, die falsch aussieht, wird „Content-Type“ in dem POST-Daten Körper statt als Kopf Senden anzeigt das Format der Daten.

Es sieht aus wie aus der requests api, dass Sie "Json = Payload" anstelle von "Daten" senden sollten. Aber ich bin kein Experte für diese Python-API.

Die Curl-Äquivalent des oben Java-Code funktioniert auch

$ ./oksocial --curl --authorize lyft --client 
Authorising Lyft API 
Lyft Client Id [***********]: 
Lyft Client Secret [********************************]: 
curl -X POST -H "Authorization:Basic ******************" -H "Connection:Keep-Alive" -H "User-Agent:okhttp/3.5.0" -H "Host:api.lyft.com" -H "Accept-Encoding:gzip" -H "Content-Length:55" -H "Content-Type:application/json; charset=utf-8" -H "Content-Type:application/json; charset=utf-8" -d '{"grant_type": "client_credentials", "scope": "public"}' https://api.lyft.com/oauth/token