我正在尝试使用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 ,即使在浪涌时间也是如此,我已经诊断出这是因为我没有使用3脚认证。
用于访问特定于用户的端点的3-legged流程。
骑车 请求或以其他方式访问用户数据,用户必须授予您权限 访问。将提示没有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 格式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请求。鉴于身份验证的第3段需要手动访问URL并获取代码,是否可以通过脚本执行此操作?
答案 0 :(得分:1)
[完全披露:我是Lyft的开发者倡导者之一]
获取该数据的唯一方法是通过三脚OAuth流请求rides.request
范围(抱歉)。但是,如果您要求offline
范围作为初始授权的一部分,则只需要请求一次外部授权。如果您最初请求了该范围,则可以使用此处概述的refresh_token
,并且不会提示您输入外部URL:
https://developer.lyft.com/docs/authentication#section-step-5-refreshing-the-access-token
如果您仅在本地使用此脚本,我建议您执行此授权一次,然后在令牌过期时将刷新令牌逻辑构建到您的脚本中。希望有所帮助!