无法获取Lyft API的访问令牌



我正在尝试使用Lyft开发人员API。我创建了一个新的应用程序来获取客户端ID和客户端秘密。我正在遵循https://developer.lyft.com/docs/authentication中的步骤,以在我的Python代码中获取访问令牌。但是我总是会遇到"未经授权的客户端"的错误。谁能指出我的错误?

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

这是Java客户端的工作示例

看上去不错的主要因素是在邮政数据正文中发送"内容类型",而不是作为指示数据格式的标头发送。

从请求API看来,您应该发送" JSON =有效载荷"而不是"数据"。但是我不是这个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

最新更新