转至元数据结尾
转至元数据起始

接口名称

eTitans获取SessionId

接口描述

本接口供第三方系统(如eTitans)通过API Key认证获取有效的SessionId,用于后续的API调用。

接口地址

/api/platform/v1/etitans/session

请求方式

POST

请求头

参数

类型

必填

说明

Content-Type

String

固定值:application/json

Authorization

String

API Key签名,格式:WallTech accessKey:signature

X-WallTech-Date

String

请求时间,GMT格式,用于签名计算和防重放攻击

Authorization头格式说明:

Authorization: WallTech {accessKey}:{signature}

签名生成方法:

1. 构造签名字符串(使用换行符\n分隔):

POST
{X-WallTech-Date}
{signatureUrl}

2. 使用HMAC-SHA1算法计算签名:

signature = Base64(HMAC-SHA1(secretKey, stringToSign))

3. 注意:使用标准Base64编码,服务器会自动处理URL-safe转换

X-WallTech-Date格式示例:

Thu, 19 Mar 2026 11:49:38 GMT

请求参数

请求体(JSON格式):

字段

类型

必填

说明

apikey

String

API Key(访问密钥)

email

String

用户邮箱

signatureUrl

String

签名用URL,只包含协议和域名

参数说明:

  • apikey:用于标识调用方身份的访问密钥
  • email:用户邮箱地址,用于查找对应的用户账号
  • signatureUrl:用于签名计算的URL,仅包含协议和域名部分(如:https://tracking-qa.etowertech.com

请求示例

curl -X POST 'https://tracking-qa.etowertech.com/api/platform/v1/etitans/session' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: WallTech pcljARV_Hka2YfpTyHr7qL:tXIUW0X7BpWl-P8S-AXPZKtKWX8=' \
  -H 'X-WallTech-Date: Thu, 19 Mar 2026 11:49:38 GMT' \
  -d '{
    "apikey": "pcljARV_Hka2YfpTyHr7qL",
    "email": "757418128@qq.com",
    "signatureUrl": "https://tracking-qa.etowertech.com"
  }'

Python签名生成示例:

import base64
import hmac
import hashlib
from datetime import datetime

ACCESS_KEY = "your_access_key"
SECRET_KEY = "your_secret_key"
EMAIL = "your_email@example.com"
SIGNATURE_URL = "https://tracking-qa.etowertech.com"

# 生成GMT时间
gmt_date = datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')

# 构造签名字符串
method = "POST"
string_to_sign = f"{method}\n{gmt_date}\n{SIGNATURE_URL}"

# 计算HMAC-SHA1签名
signature = base64.b64encode(
    hmac.new(SECRET_KEY.encode(), string_to_sign.encode(), hashlib.sha1).digest()
).decode()

# 构造Authorization头
authorization = f"WallTech {ACCESS_KEY}:{signature}"

print(f"X-WallTech-Date: {gmt_date}")
print(f"Authorization: {authorization}")

返回示例

{
  "success": true,
  "code": "0",
  "message": "success",
  "data": {
    "sessionId": "MuETuXqSzpU_QQFiSD-dbQ"
  }
}

失败示例:

{
  "success": false,
  "code": "401",
  "message": "签名验证失败",
  "data": null
}

返回字段说明

字段

类型

说明

success

Boolean

请求是否成功

code

String

响应状态码,"0"表示成功

message

String

响应消息

data

Object

会话信息对象,成功时返回

data 字段说明

data 返回的是 会话信息对象

字段

类型

说明

sessionId

String

会话ID,用于后续API调用的身份验证

userId

Number

用户ID

tenantId

Number

租户ID

email

String

用户邮箱

expiresIn

Number

会话过期时间(秒),表示距离过期还有多少秒

expireTime

Number

会话过期时间戳(毫秒)

错误码说明

错误码

说明

401

签名验证失败

401

API Key无效或已被禁用

401

用户不存在或已被禁用

400

请求参数缺失或格式错误

400

时间戳格式错误

400

请求时间戳无效(超出15分钟容差)

注意事项

1. 时间同步:客户端服务器时间必须与服务器时间保持同步,允许误差范围为15分钟
2. 签名计算:签名必须使用正确的secretKey,且签名字符串格式必须严格按照示例
3. 密钥安全:secretKey必须妥善保管,不应暴露给第三方
4. 会话复用:如果用户已有有效的SessionId,系统会复用现有会话而不是创建新会话
5. URL格式:signatureUrl只包含协议和域名,不包含路径,例如:https://tracking-qa.etowertech.com
6. 签名时效性:生成的签名应在生成后尽快使用,避免因时间差导致验证失败

  • 无标签