2016-12-01 6 views
0

lyftデベロッパーAPIを使用しようとしています。クライアントIDとクライアントの秘密を取得するための新しいアプリを作成しました。私はhttps://developer.lyft.com/docs/authenticationの手順に従って、私のPythonコードでアクセストークンを取得しています。しかし、私はいつも "権限のないクライアント"というエラーを受け取ります。誰も私の間違いを指摘できますか?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 

答えて

0

これは間違って見える主なものは、POSTデータ本体に代わりの示すヘッダーとして「コンテンツタイプ」を送信しているJavaクライアントのために

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

実施例でありますデータの形式

requests apiのように、「データ」ではなく「json = payload」を送信する必要があります。しかし、私はこのPython APIの専門家ではありません。

上記のJavaコードのカール等価も

$ ./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 
動作します
関連する問題