我正在尝试使用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
如果您仅在本地使用此脚本,则建议您进行一次授权,然后在令牌过期时将刷新令牌逻辑构建到脚本中。希望有帮助!