无法获取 lyft api 的访问令牌

Posted

技术标签:

【中文标题】无法获取 lyft api 的访问令牌【英文标题】:Unable to get access token for lyft api 【发布时间】:2016-12-01 17:10:42 【问题描述】:

我正在尝试使用 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

【问题讨论】:

【参考方案1】:

这是一个 Java 客户端的工作示例

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

看起来错误的主要是在 POST 数据正文中发送“Content-Type”,而不是作为指示数据格式的标头。

从requests api 看来,您应该发送“json = payload”而不是“data”。但我不是这个 python API 的专家。

上述java代码的curl等价物也可以工作

$ ./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

【讨论】:

以上是关于无法获取 lyft api 的访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

(JAVA) Google API 分析 - 无法使用“刷新令牌”获取新的“访问令牌”

Spotify Web API 无法获取访问令牌

Spotify API php - 无法请求数据并获取访问令牌

无法获取 Google Analytics API 的 oAuth2 访问令牌

Microsoft 认知服务 - 身份验证问题,无法获取访问令牌

在 Android 中调用 Paypal 时无法获取访问令牌