我正在尝试使用Lyft rides python API访问Lyft数据。具体来说,我正在尝试访问ride estimate endpoint

from lyft_rides.auth import ClientCredentialGrant
from lyft_rides.session import Session
from lyft_rides.client import LyftRidesClient

auth_flow = ClientCredentialGrant(client_id=MY_ID, client_secret=MY_SECRET, scopes="public")
session = auth_flow.get_session()
client = LyftRidesClient(session)

response = client.get_cost_estimates(start_latitude=start_lat, start_longitude=start_long, end_latitude=end_lat, end_longitude=end_long)


但是,即使在高峰时段,响应数据中的高峰率也始终为0,我已经诊断出这是因为我没有使用三足身份验证。

lyft developer docs中,

用于访问用户特定端点的3级流程。


  搭车
  请求或以其他方式访问用户数据,则用户必须授予您
  访问。没有Lyft帐户的用户将被提示创建
  如果他们通过以下流程定向到新帐户。


python docs中,

授权书


  如果您需要访问Lyft用户的帐户才能发出请求
  代表他们,您将经历“三足”流程。在这种情况下,
  您将需要用户通过以下方式授予对您的应用程序的访问权限:
  OAuth 2.0授权码流程。参见Lyft API文档。
  
  授权码流程是一个分为两步的授权过程。的
  第一步是让用户授权您的应用,第二步
  涉及从Lyft请求OAuth 2.0访问令牌。这个流程
  如果您要代表用户或访问者执行操作,则必须填写
  他们的信息。


from lyft_rides.auth import AuthorizationCodeGrant
auth_flow = AuthorizationCodeGrant(
    YOUR_CLIENT_ID,
    YOUR_CLIENT_SECRET,
    YOUR_PERMISSION_SCOPES,
)
auth_url = auth_flow.get_authorization_url()



  将用户导航到auth_url,他们可以在其中授予对您的访问权限
  应用。之后,它们将被重定向到带有
  格式REDIRECT_URL?code = UNIQUE_AUTH_CODE。使用这个redirect_url来
  创建一个会话并启动LyftRidesClient。


session = auth_flow.get_session(redirect_url)
client = LyftRidesClient(session)
credentials = session.oauth2credential



  将凭据信息保存在安全的数据存储中,然后将其重新用于
  代表您的用户进行API调用。 SDK将处理令牌
  当它发出带有API的API请求时,会自动为您刷新
  LyftRidesClient。




我正在尝试在脚本中自动执行python请求。鉴于身份验证的第三步需要手动访问url并获取代码,是否可以通过脚本执行此操作?

最佳答案

[完全公开:我是Lyft的开发者倡导者之一]

获取数据的唯一方法是请求rides.request范围是通过三足式OAuth流(对此感到抱歉)。但是,如果您将offline范围要求作为初始授权的一部分,则只需要请求一次此外部授权。如果最初请求该范围,则可以按此处概述的方式使用refresh_token,而不会提示您输入外部URL:

https://developer.lyft.com/docs/authentication#section-step-5-refreshing-the-access-token

如果您仅在本地使用此脚本,则建议您进行一次授权,然后在令牌过期时将刷新令牌逻辑构建到脚本中。希望有帮助!

08-05 03:39