Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过Lyft Api的脚本自动化三因素身份验证_Python_Authentication_Oauth_Lyft Api - Fatal编程技术网

Python 通过Lyft Api的脚本自动化三因素身份验证

Python 通过Lyft Api的脚本自动化三因素身份验证,python,authentication,oauth,lyft-api,Python,Authentication,Oauth,Lyft Api,我正在尝试使用python API访问Lyft数据。具体来说,我正在尝试访问 然而,响应数据中的喘振率始终为0,即使在喘振时间内也是如此,我已经诊断出这是因为我没有使用三条腿身份验证 从 用于访问用户特定端点的三腿流。 搭便车 请求或以其他方式访问用户数据,用户必须授予您 通道没有Lyft帐户的用户将被提示创建 一个新的帐户,如果他们被引导通过以下流程 从 授权 如果您需要访问Lyft用户的帐户以发出请求 代表他们,你将经历一个“三条腿”的流程。在这种情况下,, 您需要用户通过 OAuth 2.

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

然而,响应数据中的喘振率始终为0,即使在喘振时间内也是如此,我已经诊断出这是因为我没有使用三条腿身份验证

用于访问用户特定端点的三腿流。

搭便车 请求或以其他方式访问用户数据,用户必须授予您 通道没有Lyft帐户的用户将被提示创建 一个新的帐户,如果他们被引导通过以下流程

授权

如果您需要访问Lyft用户的帐户以发出请求 代表他们,你将经历一个“三条腿”的流程。在这种情况下,, 您需要用户通过 OAuth 2.0授权代码流。参见Lyft API文档

授权代码流是一个两步授权过程。这个 第一步是让用户授权你的应用程序,第二步是 涉及从Lyft请求OAuth 2.0访问令牌。这个过程 如果要代表用户或访问权限执行操作,则为必填项 他们的信息

将用户导航到auth_url,在那里他们可以授予对您的url的访问权限 应用之后,它们将被重定向到带有 格式化重定向\ URL?代码=唯一的\验证\代码。使用此重定向url来 创建会话并启动客户端

将凭据信息保存在安全的数据存储中,并将其重新用于 代表您的用户进行API调用。SDK将处理令牌 当它使用 利夫特是我的客户

问题


我试图在脚本中自动执行python请求。考虑到认证的第三阶段需要手动访问url并获取代码,是否可以通过脚本来实现这一点?

[完全披露:我是Lyft的开发者拥护者之一]

获取该数据的唯一方法是通过请求
骑乘。请求
范围是通过三条腿的OAuth流(很抱歉)。但是,如果您请求作为初始授权的一部分的
脱机
范围,则只需请求此外部授权一次。如果您最初请求了该范围,您可以使用此处概述的
refresh\u token
s,而不需要提示输入外部URL:

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

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)
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()
session = auth_flow.get_session(redirect_url)
client = LyftRidesClient(session)
credentials = session.oauth2credential