跳到主要内容

登录/认证

Solinteg Cloud Open API 采用 Token 认证:先调用登录接口,使用您的账号密码换取 token,之后在每个业务请求的 Header 中携带 token 字段即可。

认证流程​

┌──────────────┐ 1. 登录(账号 + 密码) ┌─────────────────────────┐
│ │ ───────────────────────▶ │ │
│ 您的应用 │ │ Solinteg Cloud Open API │
│ │ ◀─────────────────────── │ │
└──────────────┘ 2. 返回 token(60 分钟) └─────────────────────────┘
│
│ 3. 业务请求(Header 携带 token)
▼
正常调用业务接口;token 过期后重新登录获取
备注

注意:是自定义的 token 请求头,而非标准的 Authorization: Bearer 头。

获取 Token​

调用登录接口 POST /loginv2/auth,该接口无需携带 token。修改密码同样无需 token,具体流程参见修改密码。

curl -L 'https://lb.solinteg-cloud.com/openapi/v2/loginv2/auth' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"authAccount": "user@example.com",
"authPassword": "123456"
}'

返回结果中的 body 即为 token(JWT 格式):

{
"errorCode": 0,
"info": null,
"successful": true,
"body": "eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3Nz..."
}

携带 Token​

后续所有业务接口都需要在请求头中携带 token:

token: YOUR_TOKEN

示例(查询设备状态):

curl -L 'https://lb.solinteg-cloud.com/openapi/v2/wrapper/device/getDeviceStatus?deviceSn=A11250010094305B' \
-H 'Accept: application/json' \
-H 'token: <token>'

Token 有效期​

token 具有有效期(60 分钟),过期后所有业务接口都会返回认证失败错误,此时需重新调用登录接口获取新 token。

提示

建议集成策略

  • 记录 token 的获取时间,在过期前主动刷新(如每 55 分钟刷新一次)
  • 收到认证失败错误时,先重新登录再重试原请求
  • 避免在每次请求前都调用登录接口,注意登录接口也有 QPS 限制

代码示例​

JavaScript (Fetch)​

const baseUrl = "https://lb.solinteg-cloud.com/openapi/v2";

// 1. 登录获取 token
const loginRes = await fetch(`${baseUrl}/loginv2/auth`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
authAccount: "user@example.com",
authPassword: "your_password",
}),
});
const loginData = await loginRes.json();
const token = loginData.body;

// 2. 携带 token 调用业务接口
const res = await fetch(`${baseUrl}/wrapper/device/getDeviceStatus?deviceSn=A11250010094305B`, {
headers: {
Accept: "application/json",
token: token,
},
});
const data = await res.json();

Python (Requests)​

import requests

base_url = 'https://lb.solinteg-cloud.com/openapi/v2'

# 1. 登录获取 token
login_res = requests.post(
f'{base_url}/loginv2/auth',
json={
'authAccount': 'user@example.com',
'authPassword': 'your_password'
}
)
token = login_res.json()['body']

# 2. 携带 token 调用业务接口
res = requests.get(
f'{base_url}/wrapper/device/getDeviceStatus',
params={'deviceSn': 'A11250010094305B'},
headers={'token': token}
)
print(res.json())

Node.js (Axios)​

const axios = require("axios");

const client = axios.create({
baseURL: "https://lb.solinteg-cloud.com/openapi/v2",
headers: { Accept: "application/json" },
});

let token = null;

// 登录获取 token
async function login() {
const res = await client.post("/loginv2/auth", {
authAccount: "user@example.com",
authPassword: "your_password",
});
token = res.data.body;
}

// 通过请求拦截器自动携带 token
client.interceptors.request.use((config) => {
if (token) config.headers["token"] = token;
return config;
});

await login();
const res = await client.get("/wrapper/device/getDeviceStatus", {
params: { deviceSn: "A11250010094305B" },
});

认证相关错误​

所有接口遵循统一的响应结构(errorCode / info / body / successful),认证失败时 successful 为 false:

登录失败 - 用户不存在​

{
"errorCode": 1,
"info": {
"code": "user not exist",
"description": "user not exist"
},
"body": null,
"successful": false
}

登录失败 - 密码错误​

{
"errorCode": 1,
"info": {
"code": "password error",
"description": "password error"
},
"body": null,
"successful": false
}

业务接口认证失败排查​

返回未认证相关错误时,请检查:

  • 请求头中是否携带了 token 字段
  • token 是否已过期,过期请重新登录获取
  • 是否使用了与账号匹配的环境地址

安全最佳实践​

  • 不要将账号密码或 token 硬编码到代码中,使用环境变量管理
  • 永远不要在客户端(浏览器、App)中暴露账号密码,登录动作应由您的服务端完成

下一步​