简介
FedEx API 支持使用 OAuth 2.0(持有者令牌)验证方法来授权您的应用程序 API 请求使用 FedEx 资源。需要每 60 分钟重新生成一次 OAuth 访问令牌,并需要向每个 API 交易提供此 OAuth 访问令牌,才能验证并授权您访问 FedEx 资源。
授权API详细信息
此API可让您授权API请求,如此才能验证FedEx资源。下列部分说明API的先决条件:
注册FedEx Developer Portall时,FedEx会提供客户端ID(API密钥)和客户端机密(机密密钥)的组合,以验证您项目的API请求。您组织中的每个项目都会关联一个客户端ID和客户端机密组合,称为API凭据。
注意:客户 (Internal、Compatible 或 Proprietary Parent Child) 可联系 FedEx 代表来获取 API 和密钥。
为提供多一层安全保护,除了 API 密钥和机密密钥外,FedEx® 客户 (Internal、Compatible 或 Proprietary Parent Child) 还可发送子密钥(客户机密)和子机密(客户密码)来创建 OAuth 令牌。每个 API 请求中都会用到此令牌来完成身份验证。
您可以从FedEx Developer Portal上的“项目”页面重新创建忘记的机密密钥。
注意:创建新密钥将导致您应用程序中的代码发生变化。
本文档中的重要信息:
- 客户端密钥作为API密钥
- 客户端机密作为机密密钥
- 子密钥作为客户密钥
- 子机密作为客户密码
API凭据用于以下用途:
- 识别调用 API 的项目。
- 授予对您项目下启用的 API 的访问权限。
如何获取API凭据
根据 FedEx Developer Portal 中的输入创建凭据:
- 客户端 ID – 每当在 FedEx Developer Portal 上创建项目时,便会创建 API 密钥(客户端 ID)。您还可查看与“项目概览”页面上的项目关联的 API 密钥。
- 客户端机密 – 在 FedEx Developer Portal 上创建项目后,便可在确认页面上看到机密密钥(客户端机密)。如果需要,还可在“项目概览”页面上重新生成机密密钥。
注意:除了 API 密钥和机密密钥外,FedEx® 客户 (Internal、Compatible 或 Proprietary Parent Child) 还可发送子密钥(客户机密)和子机密(客户密码)来创建 OAuth 令牌。有关如何获取子密钥和子机密的信息,请参见凭据注册 API。
授权 API 工作原理
API授权
您在 FedEx Developer Portal 上获得 API 凭据后,请使用 OAuth 端点获取访问令牌,以用作每个 API 交易的凭据。
这些是与 OAuth 请求关联的必要输入:
- grant_type – 客户类型。(有效值:client_credentials、csp_credentials、client_pc_credentials)
- client_id – 指的是项目API密钥。
- client_secret – 指的是项目API机密密钥。
对于 FedEx® 客户 (Internal、Compatible 或 Proprietary Parent Child),请发送以下额外输入:
- child_id – 通过凭据注册API请求返回的客户密钥。
- child_secret – 通过凭据注册API请求返回的客户密码。
此请求应返回的结果如下:
- access_token – 在API交易中需要使用的加密OAuth令牌。
- token_type – 令牌的类型。在此情况下为持有者验证。
- expires_in – 令牌过期时间(以毫秒为单位)。标准令牌过期时间为一个小时。
- 范围 – 提供给客户的授权范围。
示例
请求:
POST /oauth/token HTTP/1.1
grant_type= client_credentials&client_id=your client ID&client_secret=Your secret
响应:
{ ″access_token″: ″eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX……..″,
″token_type″: ″bearer″,
″expires_in″: 3600,
″scope″: ″CXS″
}{ ″access_token″: ″eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX……..″,
″token_type″: ″bearer″,
″expires_in″: 3600,
″scope″: ″CXS″
}
FedEx® Internal或Compatible客户的请求:
POST /oauth/token HTTP/1.1
grant_type= csp_credentials&client_id=Client ID&client_secret= Client secret&child_key=Child key&child_secret=Child Secret
响应:
{ ″access_token″: ″eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX……..″,
″token_type″: ″bearer″,
″expires_in″: 3600,
″scope″: ″CXS″
}{ ″access_token″: ″eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX……..″,
″token_type″: ″bearer″,
″expires_in″: 3600,
″scope″: ″CXS″
}
FedEx® Proprietary Parent Child 客户的要求:
POST /oauth/token HTTP/1.1
grant_type= client_pc_credentials&client_id=Client ID&client_secret= Client secret&child_key=Child key&child_secret=Child Secret
响应:
{ ″access_token″: ″eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX……..″,
″token_type″: ″bearer″,
″expires_in″: 3600,
″scope″: ″CXS″
}{ ″access_token″: ″eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX……..″,
″token_type″: ″bearer″,
″expires_in″: 3600,
″scope″: ″CXS″
}
注意:访问令牌将在一小时后过期,可通过向oauth/token端点发出的POST请求来重新生成该令牌。
Response