TokenCenter 接入文档

TokenCenter 接入文档

TokenCenter 提供统一的大模型 API 接入服务。预充值、按量计费,一个 API Key 即可调用平台上的全部模型。接口兼容 OpenAI 格式,现有代码通常只需替换地址和密钥。

快速开始

  1. 注册并登录控制台。
  2. 充值:进入「钱包」,用微信支付预充值。余额按实际用量扣减。
  3. 创建令牌:进入「令牌」,新建一个 API Key(以 sk- 开头)。
  4. 调用:把 Base URL 设为 https://hub.token1024.cn/v1,model 填模型名称。
项目值
Base URLhttps://hub.token1024.cn/v1
鉴权方式请求头 Authorization: Bearer sk-你的令牌
对话接口POST /v1/chat/completions
模型列表GET /v1/models

可用模型及价格见「模型广场」,也可以用令牌调用 GET /v1/models 获取模型名称列表。

模型名称

请求里的 model 要填模型的调用名,大小写和版本号都要一致。价目表上展示的名称只是为了方便阅读,部分模型和调用名不同:

价目表名称调用名(model)
DeepSeek-V4.1-Flashdeepseek-v4.1-flash
DeepSeek-V4-Flash-0731deepseek-v4-flash-0731
DeepSeek-V4-Pro-0813deepseek-v4-pro-0813
Kimi-K3 / Kimi-K3.1-Prokimi-k3 / kimi-k3.1-pro
GLM-5.3 / GLM-5.3-Flashglm-5.3 / glm-5.3-flash
Qwen3.8-Max / Qwen3.8-Flashqwen3.8-max / qwen3.8-flash
Doubao-Seed-2.1-Pro / Doubao-Seed-2.1-Turbodoubao-seed-2.1-pro / doubao-seed-2.1-turbo
MiniMax-M3minimax-m3
doubao-seedance-2.5 标准版 / 教育版doubao-seedance-2-5-260628-std / doubao-seedance-2-5-260628-edu
doubao-seedance-2.0 标准版 / 教育版doubao-seedance-2-0-260128-std / doubao-seedance-2-0-260128-edu
doubao-seedance-2.0-fast 标准版 / 教育版doubao-seedance-2-0-fast-260128-std / doubao-seedance-2-0-fast-260128-edu
doubao-seedance-2.0-mini 标准版 / 教育版doubao-seedance-2-0-mini-260615-std / doubao-seedance-2-0-mini-260615-edu
MiniMax-H3MiniMax-H3
wan3.0-videowan3.0-video

上表的文本模型都按「代码示例」里的方式调用。视频模型的调用方式不同,见下文「视频生成」。

代码示例

以下示例中的 模型名称 请替换为「模型广场」里的模型名,sk-你的令牌 替换为你的令牌。

curl

curl https://hub.token1024.cn/v1/chat/completions \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "模型名称",
    "messages": [{"role": "user", "content": "你好"}]
  }'

Python

使用官方 OpenAI SDK(pip install openai):

from openai import OpenAI

client = OpenAI(base_url="https://hub.token1024.cn/v1", api_key="sk-你的令牌")

resp = client.chat.completions.create(
    model="模型名称",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)
print(resp.usage)  # 本次请求的 token 用量

Node.js

使用官方 OpenAI SDK(npm install openai):

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://hub.token1024.cn/v1", apiKey: "sk-你的令牌" });

const resp = await client.chat.completions.create({
  model: "模型名称",
  messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);

建议:令牌不要写死在代码里,改为从环境变量读取,也不要放进前端网页或 App 安装包,否则容易泄露。

流式输出

设置 "stream": true,模型会边生成边返回,适合对话类界面。同时设置 stream_options.include_usage,最后一个数据块会带上本次的 token 用量:

stream = client.chat.completions.create(
    model="模型名称",
    messages=[{"role": "user", "content": "写一首四行短诗"}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\n用量:", chunk.usage)

返回格式为 SSE(data: {...}),以 data: [DONE] 结束。

推理模型

部分模型会先「思考」再回答。思考过程放在返回消息的 reasoning 字段里,最终答案在 content 字段;流式输出时同样分别在 delta.reasoning 和 delta.content 里。

msg = resp.choices[0].message
print(getattr(msg, "reasoning", None))  # 思考过程,可能为空
print(msg.content)                      # 最终答案

思考过程的 token 计入输出用量,可在 usage.completion_tokens_details.reasoning_tokens 中看到具体数量。

视频生成

视频生成是异步任务:先提交任务拿到任务 ID,再每隔 10 秒左右查询一次,直到任务成功或失败。一段视频通常要 1 到 5 分钟才能生成完。

不写代码也能用:在 ComfyUI 里装上我们的 Seedance 节点、填上令牌就能出片,图文教程见 视频生成接入教程。

各模型的接口和请求格式:

模型提交任务查询任务
Seedance 系列POST /seedance/api/v3/contents/generations/tasksGET /seedance/api/v3/contents/generations/tasks/{任务ID}
MiniMax-H3POST /v1/videosGET /v1/videos/{任务ID}
wan3.0-videoPOST /v1/videosGET /v1/videos/{任务ID}

鉴权方式和文本模型一样,都是在请求头里带 Authorization: Bearer sk-你的令牌。

下载视频:任务成功后,可以从查询结果里的视频地址下载,也可以统一调用 GET /v1/videos/{任务ID}/content 直接拿到 mp4 文件。查询结果里的视频地址一般 24 小时内有效,请及时下载保存。

Seedance 系列

请求格式和火山方舟的 Seedance 接口一致。已经对接过火山方舟的代码,把地址换成 https://hub.token1024.cn/seedance/api/v3/contents/generations/tasks,把鉴权换成你的令牌,再把模型名换成上表的调用名,就可以直接使用。

每个 Seedance 型号都有两个版本,用模型名的后缀区分。两个版本分别计价,价格以价目表或你的报价单为准:

版本模型名后缀说明
标准版-std官方转售,满血真人素材库,参考素材里有真人也不需要人脸核验,但含真人的图片必须用公网 URL 传入,不能用 Base64。所有客户都可以使用
教育版-edu仅向教育机构开放,需联系客服开通。参考素材里有真人时,需要先通过活体认证

文生视频:

curl https://hub.token1024.cn/seedance/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-260128-std",
    "content": [{"type": "text", "text": "一只橘猫在窗台上伸懒腰,阳光洒进来"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
  }'

图生视频(首帧):在 content 里加一张图片,role 填 first_frame。图片可以是公网 URL,也可以是 Base64 数据(data:image/png;base64,...)。图片里有真人时只能用公网 URL,见下面的「注意」:

{
  "model": "doubao-seedance-2-0-260128-std",
  "content": [
    {"type": "text", "text": "女孩睁开眼,温柔地看向镜头,镜头缓缓拉远"},
    {"type": "image_url", "image_url": {"url": "https://example.com/first.png"}, "role": "first_frame"}
  ],
  "resolution": "720p",
  "ratio": "adaptive",
  "duration": 5
}

常用参数:

参数说明
resolution480p、720p、1080p。4k 只有 Seedance 2.0 支持,且只支持 16:9 和 9:16。2.0-fast 和 2.0-mini 只支持 480p 和 720p。不填按 720p
ratio16:9、4:3、1:1、3:4、9:16、21:9;图生视频建议用 adaptive
duration视频秒数。Seedance 2.5 为 4 到 30 秒,2.0 系列为 4 到 15 秒;填 -1 由模型自动决定时长。不填按 5 秒
generate_audio是否生成有声视频,默认 true

参数要写在请求体顶层,和 model、content 并列。写在提示词里的 --resolution 480p、--duration 5 这类写法不会生效,还会被当成提示词的一部分。

更多参数(尾帧、参考视频、参考音频、视频编辑等)请参考火山方舟官方的创建视频生成任务文档。

注意:

  • 真人素材:两个版本的用法不同。标准版不用认证,图片用公网 URL 直接传入,见下面的「标准版真人素材」;教育版要先认证、再用素材 ID 引用,见「教育版真人素材」。AI 生成的写实人物也会被当成真人,教育版请按「教育版 AI 人物素材」处理。
  • 视频任务只提供提交和查询两个接口,火山方舟的任务列表、取消任务接口暂不支持。

查询结果:status 依次为 queued(排队中)、running(生成中),最后是 succeeded(成功),或 failed、expired、cancelled(失败)。成功后视频地址在 content.video_url,本次消耗的视频 token 数在 usage.completion_tokens。

Seedance 标准版真人素材

标准版(模型名以 -std 结尾)使用含真人的图片或视频,不需要真人认证,也不使用素材库。创建视频任务时把素材直接放进 content 即可,唯一的要求是:含真人的图片必须用公网 URL 传入,不能用 Base64。

步骤做什么
1. 准备素材把真人照片放到公网能直接下载的地址,例如对象存储的公开链接或带签名的临时链接。不能是内网地址,不能需要登录,临时链接的有效期要覆盖任务提交和生成的时间
2. 提交任务模型选 -std 版本,图片用 image_url 填 URL 放进 content,接口和普通视频任务相同
3. 查询结果和普通视频任务相同,见下面的「查询结果」
curl https://hub.token1024.cn/seedance/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-5-260628-std",
    "content": [
      {"type": "text", "text": "老师面向镜头讲解,自然微笑,镜头缓缓推近"},
      {"type": "image_url", "image_url": {"url": "https://你的存储地址/teacher.jpg"}, "role": "first_frame"}
    ],
    "resolution": "720p",
    "ratio": "adaptive",
    "duration": 5
  }'

注意:

  • 不要用 Base64(data:image/...;base64,...)传含真人的图片,会被拦截并返回 InputImageSensitiveContentDetected.PrivacyInformation(报错里提示 may contain real person)。遇到这个报错,先检查图片是不是用了 Base64,改成 URL 后重新提交即可,标准版不需要去做真人认证。被拦截的请求不扣费。
  • 视频素材本来就只能用 URL 传入。
  • 素材库(asset://素材ID)和真人认证接口只对教育版开放,标准版不需要也用不了。
  • 首帧之外的其他用法(尾帧、参考图、参考视频等)写法相同,只要图片都用 URL。参数请参考火山方舟官方的创建视频生成任务文档。

Seedance 教育版真人素材

教育版使用真人素材要分三步:出镜本人完成真人认证 → 把素材上传到素材库 → 生成视频时用 asset://素材ID 引用。素材接口只对教育版开放,不收费。

所有素材接口都是同一个地址,用 Action 区分,请求体字段名首字母大写。返回格式为 {"ResponseMetadata": {...}, "Result": {...}},数据在 Result 里;出错时 ResponseMetadata.Error 或 error 里有原因:

POST https://hub.token1024.cn/seedance/api/v3/asset?Action=<接口名>&Version=2024-01-01
Authorization: Bearer sk-你的令牌
Content-Type: application/json
步骤接口名请求体返回
1. 发起真人认证CreateVisualValidateSession{"CallbackURL": "https://你的域名/callback"}Result.H5Link(认证链接)、Result.BytedToken
2. 出镜本人用手机打开 H5Link,完成活体检测完成后手机跳转到 CallbackURL,并追加 bytedToken、resultCode=10000 等参数
3. 查询认证结果GetVisualValidateResult{"BytedToken": "..."}认证通过后返回 Result.GroupId(真人素材组 ID);未完成时返回 404「认证尚未完成」
4. 上传素材CreateAsset{"GroupId": "...", "URL": "https://公网地址/a.jpg", "AssetType": "Image", "Name": "张老师"}Result.Id(素材 ID)
5. 等待素材可用GetAsset{"Id": "..."}Result.Status 从 Processing 变成 Active 后才能使用;Failed 时原因在 Result.Error
  • 认证链接有效时间较短(约 20 分钟),过期后查询返回 404「认证会话已失效」,需要重新发起。跳转只是浏览器行为,认证结果以第 3 步查询为准。
  • CreateAsset 的 URL 必须是公网能下载的地址,不支持 Base64;AssetType 可以是 Image、Video、Audio。素材入库后上游自己保存一份,原地址可以删除。
  • 上传的素材必须是认证本人:上游会比对人脸,不一致或没有清晰人脸时素材变成 Failed,错误码 FaceMismatch。
  • 真人认证接口出错时原因在 error 里,素材接口出错时在 ResponseMetadata.Error 里。
  • 每位出镜真人只需认证一次,之后同一人的素材都上传到同一个真人素材组。删除真人素材组后需要重新认证。

生成视频时,原来填图片地址的地方改成素材 ID:

{
  "model": "doubao-seedance-2-0-260128-edu",
  "content": [
    {"type": "text", "text": "图片1 中的老师站在讲台前,微笑着向学生打招呼"},
    {"type": "image_url", "role": "reference_image", "image_url": {"url": "asset://素材ID"}}
  ],
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5
}

视频和音频素材分别写成 {"type": "video_url", "role": "reference_video", "video_url": {"url": "asset://素材ID"}} 和 {"type": "audio_url", "role": "reference_audio", "audio_url": {"url": "asset://素材ID"}}。

其他素材接口:ListAssetGroups(列出素材组,{"Filter": {"GroupType": "LivenessFace"}} 只看真人组)、ListAssets、GetAssetGroup、UpdateAssetGroup、UpdateAsset、DeleteAssetGroup、DeleteAsset,以及创建非真人素材组的 CreateAssetGroup({"Name": "...", "GroupType": "AIGC"})。素材只属于你的账号,其他账号看不到也用不了;素材只能用于教育版模型。GetAsset 返回的 URL 约 12 小时失效,生成视频请始终用 asset://素材ID。

Seedance 教育版 AI 人物素材

用 AI 工具(如文生图模型)生成的写实人物,审核时分不出和真人的区别,直接放进参考图会被当成真人拦下,返回 InputImageSensitiveContentDetected.PrivacyInformation。AI 人物没有本人,也做不了真人认证。

这类素材要放进 AIGC 素材组:不需要刷脸认证,上传后即可使用。接口地址、鉴权和返回格式与上面的真人素材接口相同。

步骤接口名请求体返回
1. 创建 AIGC 素材组CreateAssetGroup{"Name": "AI 讲师", "GroupType": "AIGC"}Result.Id(素材组 ID)
2. 上传素材CreateAsset{"GroupId": "素材组ID", "URL": "https://公网地址/ai-teacher.jpg", "AssetType": "Image", "Name": "AI 讲师-正面"}Result.Id(素材 ID)
3. 等待素材可用GetAsset{"Id": "素材ID"}Result.Status 从 Processing 变成 Active 后才能使用,一般几秒钟

示例:

# 1. 创建 AIGC 素材组(只需一次,之后的 AI 人物素材都可以放进同一个组)
curl "https://hub.token1024.cn/seedance/api/v3/asset?Action=CreateAssetGroup&Version=2024-01-01" \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{"Name": "AI 讲师", "GroupType": "AIGC"}'

# 2. 上传素材
curl "https://hub.token1024.cn/seedance/api/v3/asset?Action=CreateAsset&Version=2024-01-01" \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{"GroupId": "素材组ID", "URL": "https://公网地址/ai-teacher.jpg", "AssetType": "Image", "Name": "AI 讲师-正面"}'

# 3. 查询状态,直到 Status 为 Active
curl "https://hub.token1024.cn/seedance/api/v3/asset?Action=GetAsset&Version=2024-01-01" \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{"Id": "素材ID"}'

生成视频时,用 asset://素材ID 代替图片地址。提示词里用「图片1」「图片2」指代参考图,按 content 中图片出现的顺序编号,不要把素材 ID 写进提示词:

{
  "model": "doubao-seedance-2-5-260628-edu",
  "content": [
    {"type": "text", "text": "图片1 中的老师站在讲台前,微笑着向学生打招呼"},
    {"type": "image_url", "role": "reference_image", "image_url": {"url": "asset://素材ID"}}
  ],
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5
}
  • 只放 AI 生成的人物。 真实存在的人(包括照片经过 AI 美化、换背景的)必须走上面的「教育版真人素材」流程,由本人认证授权。把真人照片放进 AIGC 素材组属于违规使用,责任由上传方承担。
  • CreateAsset 的 URL 必须是公网能下载的地址,不支持 Base64。素材入库后上游自己保存一份,原地址可以删除。
  • 同一个 AI 人物建议多上传几个角度的图片,生成时可以一起作为参考图,人物更稳定。
  • 用 ListAssetGroups 加 {"Filter": {"GroupType": "AIGC"}} 只看 AIGC 素材组;不再需要的素材用 DeleteAsset、DeleteAssetGroup 删除。
  • 素材只属于你的账号,只能用于教育版模型(-edu)。

MiniMax-H3

curl https://hub.token1024.cn/v1/videos \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "content": [{"type": "text", "text": "清晨的湖面,薄雾缓缓散开,一只白鹭掠过水面"}],
    "resolution": "768P",
    "duration": 5,
    "ratio": "16:9"
  }'
参数说明
content必填,必须包含一个文本元素。可以再加图片(role 为 first_frame、last_frame 或 reference_image)、参考视频(role 为 reference_video)或参考音频(role 为 reference_audio),写法和 Seedance 相同
resolution目前只开放 768P
duration4 到 15 的整数,单位秒
ratio16:9、21:9、4:3、1:1、3:4、9:16、adaptive。文生视频必填,且不能用 adaptive;图生视频建议用 adaptive

查询结果:status 依次为 queued、in_progress,最后是 completed(成功)或 failed(失败)。成功后视频地址在 metadata.url,计费秒数在 metadata.usage.total_seconds。

wan3.0-video

curl https://hub.token1024.cn/v1/videos \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "input": {"prompt": "一只小猫在月光下的屋顶上奔跑,城市的霓虹灯在远处闪烁"},
    "parameters": {"resolution": "720P", "ratio": "16:9", "duration": 5}
  }'
参数说明
input.prompt提示词
input.media可选,素材列表,每项为 {"type": ..., "url": ...}。type 可以是 first_frame、last_frame、reference_image、reference_video、reference_audio
parameters.resolution1080P(默认)、720P、480P
parameters.ratioadaptive(默认)、16:9、4:3、1:1、3:4、9:16
parameters.duration2 到 30 的整数,默认 5;填 -1 由模型自动决定时长
parameters.audio是否带声音,默认 true,有无声音价格相同

查询结果:status 依次为 queued、in_progress,最后是 completed(成功)或 failed(失败)。成功后视频地址在 output.video_url,生成时长在 usage.duration。

Python 示例:提交、等待、下载

import time
import requests

SERVER = "https://hub.token1024.cn"
HEADERS = {"Authorization": "Bearer sk-你的令牌"}

task = requests.post(f"{SERVER}/v1/videos", headers=HEADERS, json={
    "model": "wan3.0-video",
    "input": {"prompt": "一只小猫在月光下的屋顶上奔跑"},
    "parameters": {"resolution": "720P", "duration": 5},
}).json()
task_id = task["id"]

while True:
    time.sleep(10)
    status = requests.get(f"{SERVER}/v1/videos/{task_id}", headers=HEADERS).json()
    if status["status"] in ("completed", "failed"):
        break

if status["status"] == "completed":
    video = requests.get(f"{SERVER}/v1/videos/{task_id}/content", headers=HEADERS)
    open("output.mp4", "wb").write(video.content)

Seedance 的写法相同:提交和查询改用 /seedance/api/v3/contents/generations/tasks 这一组接口,成功状态是 succeeded。

令牌管理

在「令牌」页面可以为每个令牌单独设置:

设置用途
额度上限这个令牌最多能花多少钱,用完即停,不影响账户里的其他令牌
过期时间到期后自动失效
模型限制只允许调用指定的模型
IP 白名单只允许指定 IP 使用,适合固定出口的服务器

建议:不同项目、不同环境(测试 / 正式)分别建令牌。某个令牌泄露时,只需禁用或删除那一个。

计费说明

  • 按量计费:每次调用按「输入 token 数 × 输入单价 + 输出 token 数 × 输出单价」扣费。各模型单价见「模型广场」。
  • 缓存命中:支持缓存的模型,命中缓存的输入 token 按更低的缓存价计费。
  • 输出包括思考过程:推理模型的思考过程按输出 token 计费。
  • DeepSeek 分时计价:以北京时间为准,高峰期价格是空闲时段的 2 倍。
    • V4-Flash-0731、V4-Pro-0813:每天(含周末)9:00–12:00、14:00–18:00 为高峰期。
    • V4.1-Flash:周一至周五的同样时段为高峰期。
    • 其余时间为空闲时段。
  • MiniMax-M3 按输入长度分档:单次请求输入达到 512K token 后,整次请求按高档价格计费。
  • Seedance 视频:按生成视频消耗的视频 token 计费,单价按分辨率、请求里是否带参考视频而不同。视频 token 数由分辨率、帧率和时长决定。
  • MiniMax-H3、wan3.0-video:按秒计费。
    • wan3.0-video:按生成视频的时长计费。
    • MiniMax-H3:按计量总秒数计费,带参考素材时可能多于视频本身的时长。
  • 视频先预扣、后结算:提交任务时先按请求的规格预扣一笔,任务完成后按实际用量多退少补。智能时长(duration 为 -1)会按最长时长预扣。任务失败时,预扣的费用会退回。
  • 失败不扣费:请求失败(返回错误)时不扣费。
  • 用量明细:每次调用的模型、token 数和扣费金额,都可以在「使用日志」中查看。

错误码

出错时返回 JSON,格式如下。排查问题时请把 message 里的 request id 一并提供给客服。

{"error": {"message": "错误说明 (request id: ...)", "type": "new_api_error", "code": "错误代码"}}
HTTP 状态码常见原因处理方法
401令牌无效、已删除、已禁用,或没有带 Authorization 请求头检查令牌是否正确复制、是否仍在有效状态
403账户余额不足,或令牌额度用完(pre_consume_token_quota_failed);也可能是请求 IP 不在令牌的白名单里充值,或调高令牌额度;检查 IP 白名单
429请求太频繁,或上游模型繁忙稍后重试,建议采用指数退避(等待 1 秒、2 秒、4 秒……)
503模型名称不存在或暂不可用(model_not_found),或平台负载过高核对「模型广场」里的模型名称;稍后重试
500 / 502上游模型服务异常稍后重试;持续出现请联系客服

在客户端中使用

不写代码也可以使用。常见的聊天客户端(Cherry Studio、DeepChat、OpenCat 等)都支持「OpenAI 兼容」接口:

在客户端里新增「OpenAI 兼容」服务商,API 地址填 https://hub.token1024.cn(部分客户端要求填 https://hub.token1024.cn/v1),密钥填你的令牌,然后添加需要的模型名称。

常见问题

Q:为什么调用报「无可用渠道」?
模型名称需要和上面「模型名称」一节里的完全一致,包括大小写和版本号。

Q:余额用完后正在进行的请求会中断吗?
不会中断已经开始的请求。余额不足时,新的请求会返回 403。

Q:视频任务提交后多久能拿到结果?
通常 1 到 5 分钟,排队时会更久。建议每 10 秒左右查询一次,不要更频繁。

Q:有教育版吗?
Seedance 有教育版,模型名以 -edu 结尾,只向教育机构开放,开通请联系客服。未开通的账号调用教育版会报错,但不扣费。

Q:可以在网页前端直接调用吗?
不建议。令牌放进网页,任何访问者都能看到。请通过你自己的后端服务转发调用。