智能车python sdk

smartcar的Python项目详细描述


smartcar python后端sdk构建状态pypi version

概述

智能车API允许您读取车辆数据(位置、里程表)并使用HTTP请求向连接的车辆发送命令(锁定、解锁)。

要向车辆发出Web或移动应用程序请求,最终用户必须使用SmartCar Connect连接其车辆。

在与python sdk集成之前,您需要在SmartCar Developer门户中注册一个应用程序。一旦您注册了一个应用程序,您将拥有一个客户端ID和客户端密码,这将允许您授权用户。

安装

pip install smartcar

总使用量

既然您有了自己的id、secret和redirect uri,下面是如何使用sdk通过smartcar api进行身份验证和发出请求的简单总体思路。

{"access_token":"...","token_type":"Bearer","expiration":"2018-05-02T18:04:25+00:00","refresh_token":"...","refresh_expiration":"2018-06-02T18:03:25+00:00","expires_in":"..."}
defget_fresh_access():access=load_access_from_database()ifsmartcar.is_expired(access['expiration']):new_access=client.exchange_refresh_token(access['refresh_token'])put_access_into_database(new_access)returnnew_accesselse:returnaccessfresh_access_token=get_fresh_access()['access_token']
{"vehicles":["uuid-of-first-vehicle","...","uuid-of-nth-vehicle"],"paging":{"count":10,"offset":0}}
vehicle=smartcar.Vehicle(vehicle_id,access_token)odometer=vehicle.odometer()['data']['distance']

处理异常

<表><广告>状态代码异常名称< /广告><正文>400SmartCar.ValidationException401智能车。身份验证异常403SmartCar.PermissionException404SmartCar.ResourceNotFoundException409SmartCar.StateException429SmartCar.RateLimitingException430smartcar.monthlylimitexeed500 smartcar.server异常501SmartCar.VehicleNotCapableException501smartcar.smartcarnotcapableexception504SmartCar.GatewayTimeoutException

查看我们的错误文档了解更多信息。

authclient

smartcar.authclient(self,client_id,client_secret,redirect_uri,scope=none,test_mode=false)

用于访问SmartCar API的客户端

参数:

<表><广告>参数 键入必需说明 < /广告><正文>客户ID字符串必需应用程序clientID从SmartCar开发人员门户获取。 客户机密字符串必需application clientsecret从SmartCar Developer门户获取。 重定向uri字符串必需在应用程序设置中设置RedirectUri。给定的URL必须与应用程序设置中的URL匹配。范围字符串[]可选 应用程序需要的权限列表。这将默认要求所有作用域。有效的权限名称可以在
api参考中找到测试模式布尔值可选 在测试模式下启动SmartCar Connect。

获取认证URL(self,force=false,state=none,vehicle=none)

生成连接URL

参数

<表><广告>参数 键入必需说明 < /广告><正文>强制布尔值可选 将forceprompt设置为true将在每次身份验证尝试时显示"权限批准"屏幕,即使用户以前已同意权限的确切范围。状态字符串可选 OAuth状态参数传递给redirectUri。此参数可用于识别发起请求的用户。车辆信息["make"]字符串可选 包括dict车辆信息品牌属性允许用户绕过汽车品牌选择屏幕。有关受支持品牌的完整列表,请参阅我们的API参考资料。make不区分大小写。单选 布尔值或字典可选 设置向用户显示的授权对话框行为的可选值。如果设置为truesingle_select限制用户只选择一辆车。有关详细信息,请参阅单选指南单选.vin字符串可选 车辆的车辆识别号(车辆识别号)。通过将single_select作为具有vin属性的dict传入,single select行为将打开,并且SmartCar将仅授权具有指定vin的车辆。单选车辆识别号优先于制造参数。请参阅《单选指南》。

返回

<表><广告>键入说明 < /广告><正文>字符串智能车连接URL

升高

SmartCareException-有关所有可能的异常,请参见异常部分

示例

'https://connect.smartcar.com/oauth/authorize?response_type=token...'

交换代码(代码)

交换访问字典的授权码

参数

<表><广告>参数 键入说明 < /广告><正文>代码字符串与SmartCar交换访问令牌的授权码

返回

<表><广告>键入说明 < /广告><正文>字典包含访问和刷新令牌的字典字典。访问令牌表示用于向SmartCar API发出请求的访问令牌的字符串。字典。过期访问令牌过期的日期时间字典。刷新令牌表示刷新令牌的字符串,用于在当前访问令牌过期时续订访问。刷新令牌将在60天后过期。字典。刷新过期刷新令牌过期的日期时间字典。标记类型始终设置为不记名。在以下步骤中,令牌类型用于形成SmartCar API使用的授权头。

升高

SmartCareException-有关所有可能的异常,请参见异常部分

交换刷新令牌(令牌)

为新的访问字典交换刷新令牌

参数

<表><广告>参数 键入说明 < /广告><正文>令牌字符串刷新令牌以与SmartCar交换访问令牌

返回

<表><广告>键入说明 < /广告><正文>字典包含访问和刷新令牌的字典字典。访问令牌表示用于向SmartCar API发出请求的访问令牌的字符串。字典。过期访问令牌过期的日期时间字典。刷新令牌表示刷新令牌的字符串,用于在当前访问令牌过期时续订访问。刷新令牌将在60天后过期。字典。刷新过期刷新令牌过期的日期时间字典。标记类型始终设置为不记名。在以下步骤中,令牌类型用于形成SmartCar API使用的授权头。

升高

SmartCareException-有关所有可能的异常,请参见异常部分

兼容(车辆识别号,范围)

确定车辆与智能车的兼容性。

兼容车辆是指:

  1. 具备互联网连接所需的硬件,
  2. 属于SmartCar支持的品牌和型号,并且
  3. 支持权限。
  4. < > >

    要使用此功能,请与我们联系!< /P>

    参数

    <表><广告>参数 键入必需说明 < /广告><正文>vin字符串必需车辆的车辆识别号。范围字符串[]必需要检查兼容性的权限列表。有效的权限名称可在API参考中找到。

    返回

    <表><广告>键入说明 < /广告><正文>布尔值false如果车辆不兼容。正确如果车辆可能兼容

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分。例外情况。

    *注意:由于我们只使用车辆识别号,因此我们只能保证车辆与平台不兼容。

    车辆

    从SmartCar Connect接收到访问令牌后,您的应用程序可能会 使用访问令牌和车辆类请求车辆。

    smartcar.vehicle(self,vehicle\u id,access\u token,unit\u system='metric')

    初始化用于向SmartCar API发出请求的新车。

    参数

    <表><广告>参数 键入必需说明 < /广告><正文>车辆识别号字符串必需车辆的唯一标识符 访问令牌字符串必需有效的访问令牌 单元系统字符串可选 用于车辆数据的单元系统。默认为公制。

    设置单元系统(自我,单元系统)

    更新单元系统以用于对SmartCar API的请求。

    参数

    <表><广告>参数 键入说明 < /广告><正文>单元系统字符串要使用的单位系统(公制/英制)

    权限(自身)

    返回当前与此车辆关联的所有权限的分页列表。

    返回

    <表><广告>键入说明 < /广告><正文>字符串[]一组权限。

    拥有权限(自我、权限)

    返回车辆是否包含指定的权限。

    参数

    <表><广告>参数 键入说明 < /广告><正文>权限字符串[]或字符串要检查的权限。

    返回

    <表><广告>键入说明 < /广告><正文>布尔值车辆是否具有指定权限。

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    信息(自我)

    返回包含标识信息的单个车辆对象。

    返回

    <表><广告>键入说明 < /广告><正文>字典车辆信息 字典。id车辆标识(uuid v4)。字典。制作车辆制造商。字典。型号车辆型号。字典。年份车型年份。

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    < H3><鳕鱼>E>车辆识别号(自身)

    返回车辆的制造商标识符。

    返回

    <表><广告>键入说明 < /广告><正文>字符串制造商唯一标识符。

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    位置(自身)

    返回车辆在地理坐标中的位置。

    返回

    <表><广告>键入说明 < /广告><正文>字典车辆位置 字典。数据纬度纬度(度)。字典。数据经度经度(度)。字典。年龄数据年龄的日期时间

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    里程表(自身)

    返回车辆当前的里程表读数。

    返回

    <表><广告>键入说明 < /广告><正文>字典车辆里程表(以公里或英里为单位)。要设置单位,请参见设置单位系统字典。数据距离车辆当前的里程表字典。单元系统里程表数据的单位系统。要设置,请参见设置单元系统字典。年龄数据年龄的日期时间

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    燃油(自身)

    返回车辆的燃油状态。

    返回

    <表><广告>键入说明 < /广告><正文>字典车辆的燃油状态字典。数据范围汽车可行驶的估计剩余距离(以公里或英里为单位)。要设置单位,请参见设置单位系统字典。数据。剩余百分比油箱中剩余的燃油油位(百分比)字典。数据。取消训练油箱中的燃油量(升或加仑(US))。要设置单位,请参见设置单位系统字典。单元系统燃油数据的单位系统。要设置,请参见设置单元系统字典。年龄数据年龄的日期时间

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    电池(自身)

    返回车辆的电池状态。

    返回

    <表><广告>键入说明 < /广告><正文>字典车辆的电池状态字典。数据范围汽车可行驶的估计剩余距离(以公里或英里为单位)。要设置单位,请参见设置单位系统字典。数据。剩余百分比电池剩余电量(百分比)字典。单元系统电池数据的单位系统。要设置,请参见设置单元系统字典。年龄数据年龄的日期时间

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    充电(自行)

    返回车辆的充电状态。

    返回

    <表><广告>键入说明 < /广告><正文>字典车辆充电状态字典。数据.ispluggedin指示充电电缆是否已插入 字典。数据.状态表示充电系统的当前状态。可以完全充电充电,或不充电字典。年龄数据年龄的日期时间

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    断开(自行)

    断开此车辆与连接的应用程序的连接。

    升高

    SmartCareException-请求失败时。有关所有可能的异常,请参阅异常部分。

    注意:调用此方法将使您的访问令牌无效,并且您将 必须让用户根据您的应用程序重新授权车辆 希望向其提出请求

    解锁(自行)

    解锁车辆。

    返回

    <表><广告>键入说明 < /广告><正文>字典。状态成功请求时设置为成功。

    升高

    SmartCareException如果请求不成功

    锁(自身)

    锁定车辆。

    返回

    <表><广告>键入说明 < /广告><正文>字典。状态成功请求时设置为成功。

    升高

    SmartCareException-请求失败时。有关所有可能的异常,请参阅异常部分。

    静态方法

    智能车是否已过期(过期)

    检查是否过期

    参数

    <表><广告>参数 键入说明 < /广告><正文>过期日期时间 到期日期时间

    返回

    <表><广告>键入说明 < /广告><正文>布尔值如果过期则为true

    smartcar.get_vehicle_id(access_token,limit=10,offset=0)

    获取用户车辆ID的列表

    参数

    <表><广告>参数 键入必需说明 < /广告><正文>访问令牌字符串必需来自先前检索的访问对象的有效访问令牌限制整数可选 要返回的车辆ID数偏移量整数可选 启动车辆列表的索引

    返回

    <表><广告>键入说明 < /广告><正文>字典包含车辆ID列表和寻呼信息的响应 字典。车辆一组车辆ID。字典。分页计数整个查询的元素总数(不仅仅是给定的页面)。字典。分页偏移返回元素列表的当前开始索引。

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    智能车。获取用户ID(访问令牌)

    检索与访问令牌关联的用户标识

    参数

    <表><广告>参数 键入说明 < /广告><正文>访问令牌字符串来自先前检索的访问对象的有效访问令牌

    返回

    <表><广告>键入说明 < /广告><正文>字符串用户ID

    升高

    SmartCareException-有关所有可能的异常,请参见异常部分

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish