第三方平台授权流程

一、基本定义

极飞云

极飞云平台,通过开放接口的方式,为第三方平台提供「极飞植保无人机操作员」的数据交互能力。

第三方平台

基于极飞云平台,结合特定农业应用需求,开发相关应用的机构/开发者,第三方平台需要具备相应技术研发能力。

极飞植保无人机操作员

购买了极飞无人机产品,同时通过极飞学院的培训、操作员资格证考试,拥有极飞植保无人机操作员资格证的极飞用户。

极飞植保无人机

P系列植保无人机,包括P20、P30的2018款、2019款。

极飞植保无人机拥有者

具有植保无人机所有权的极飞用户。

第三方平台需要通过无人机拥有者的授权,才能取得通过极飞云开放的接口获取该无人机数据的权限。

第三方平台需要通过极飞植保无人机操作员的授权,才能取得通过极飞云开放的接口获取该操作员在极飞植保管理系统中产生的数据,或向该操作员分派作业任务和地块的权限。

二、操作员授权流程

详细流程:

步骤1:第三方平台获取预授权码(pre_auth_code)

第三方平台需要凭预授权码,才能访问极飞云授权网站的授权页面。

POST https://open.xag.cn/v1/auth/create_preauthcode

Path Parameters:

参数

是否必填

类型

说明

component_access_token

string

第三方平台access_token

Body Parameters:

{
    "component_appid": ""
}

返回结果示例(200)

{
    "pre_auth_code": "H4sIAAAAAAAAA0t1d8uLMPIrTjIOy44wDspJNg5UNXYBAPf75DQWAAAA", 
    "expires_in": 600
}

步骤2:引导用户进入极飞云授权页面

第三方平台引导用户进入极飞云授权页面。

授权页面URL:

GET https://open.xag.cn/v1/auth/user_auth

访问授权页面URL时,需要提交参数:

参数

是否必填

类型

说明

component_access_token

string

第三方平台access_token

pre_auth_code

string

预授权码

redirect_uri

string

第三方平台回调URI

其中redirect_uri只支持在极飞云第三方开发者中心注册的主机域名。

用户在极飞云授权页面中,输入账号密码确认授权后,极飞云授权网站会将授权码提交至第三方平台回调URI,提交方式:

POST {redirect_uri}

提交内容示例:

{
    "authorization_code": "",
    "expire_in": 3600
}

参数说明:

参数

是否必填

类型

说明

authorization_code

string

用户授权码

expire_in

integer

有效时间

步骤3:用户在极飞云授权页面登陆极飞账号,并同意授权给第三方平台

步骤4:授权后回调URI,得到授权码(authorization_code)和过期时间

步骤5:利用授权码调用极飞云平台的API

三、调用接口凭证

第三方平台通过授权码可以获取接口调用凭证,使用接口调用凭证来访问API

接口请求方式

POST https://open.xag.cn/v1/auth/token

请求参数

请求参数

是否必填

类型

说明

authorization_code

string

授权码

返回示例

{
    "union_id": "",
    "access_token": "",
    "expire_in": ""
}

返回字段说明

字段

类型

说明

union_id

string

极飞账户唯一标识

access_token

string

接口调用凭证

expire_in

integer

接口调用凭证有效期

四、接口调用安全

为了确保接口调用的安全性,需要在每次调用接口时,在HTTP Header中,加上Authorization授权标识,授权标识由以下几个部分组成:

Authorization: xag:{component_appid}:{timestamp}:{nonce}:{singature}

授权标识字段说明

字段

说明

xag

授权标识前缀,固定为xag

component_appid

第三方开放平台appid

timestamp

时间戳

nonce

随机字符串

singature

使用app_secret对请求进行加密的签名

Singature签名生成方法

singature = md5(component_appid + app_secret + timestamp + nonce)

接口会根据timestamp校验请求的有效期,超过10分钟,会被认为请求数据过期。

Last updated

Was this helpful?