个人访问令牌
从你的后端生成短期令牌,这样真实 API 密钥就不会随 Unity 构建一起发布,从而消除客户端应用中的凭证泄露。
默认情况下,Convai Unity SDK 会从以下位置读取你的 API 密钥: ConvaiSettings.asset,该密钥被编译进你的构建中。任何提取构建的人都可以取出该密钥并用它访问你的 Convai 账户。个人访问令牌(PAT)可以彻底消除这种暴露。你的真实 API 密钥保存在你的 后端 ——一个你控制的服务器端应用(Node.js、Python、.NET 等),你的用户不会直接与之交互。后端会生成一个短期令牌——有效期为一小时——并将其交给 Unity 应用。应用使用该令牌连接到 Convai。如果令牌被拦截,它会在一小时内过期,且不能用于访问你的账户设置、角色或计费。PAT 需要一台保存真实 API 密钥并代表用户调用 Convai 令牌端点的服务器。一个轻量函数(AWS Lambda、Azure Function、Cloudflare Worker 等)就足够——每个会话只需发起一次 HTTP 请求。
你的后端 ──持有──► 真实 API 密钥
│
│ POST /user/connect (服务器端,绝不从客户端发起)
▼
Convai API ──返回──► apiAuthToken (1 小时)
│
│ 在运行时交付给 Unity 应用
▼
Unity 应用 ──使用──► apiAuthToken 作为凭证
(真实 API 密钥从不出现在构建中)令牌端点
这三个端点都指向 https://api.convai.com ,并且需要在 CONVAI-API-KEY 请求头中提供你的真实 API 密钥。 这些调用由你的后端发起,而不是由 Unity 应用发起。
生成令牌
POST https://api.convai.com/user/connectContent-Type
application/json
CONVAI-API-KEY
你的 Convai API 密钥
请求体: {}
响应:
apiAuthToken
要交付给 Unity 应用的短期令牌。
expirationTime
过期的 UTC 时间戳——大约在生成后 1 小时。
当当前令牌仍然有效时,你可以生成一个新令牌。生成新令牌不会使先前的令牌失效。
延长令牌
请求头:与生成接口相同。
会在不使其失效的情况下重置现有令牌的过期计时。
撤销令牌
请求头:与生成接口相同。
立即使令牌失效。请在注销时或令牌不再需要时调用此接口。
与 Unity SDK 集成
从 apiAuthToken 获取,然后将其传递给 ConvaiManager.ActiveManager.ConnectWithAuthTokenAsync() ——SDK 会将其作为 CONVAI-API-KEY 此次连接尝试的凭证请求头,这与 API 密钥所占用的位置相同。这要求在 Project Settings 中选择 Auth Token 模式;请参见 配置 Auth Token 模式 以及完整参数参考中的 使用现有认证令牌连接.
不要在 ConvaiSettings.asset 用于生产构建。 将该字段留空,并在连接时改为提供 PAT。
未 ConvaiManager 子类—— ConnectWithAuthTokenAsync 它本身不会获取任何内容,因此令牌获取和连接调用都保留在一个普通组件中。
绝不要直接从 Unity 应用调用 https://api.convai.com/user/connect 。这样做需要将真实 API 密钥放入构建中——而这正是 PAT 要防止的。务必从你的后端调用它。
不要将 apiAuthToken 持久化到磁盘(例如, PlayerPrefs)。缓存的令牌属于已存储的凭证。每次应用启动时都应从后端获取一个新的令牌。
令牌过期与会话时长
一旦 Convai 会话开始,在该会话期间令牌不再被检查——会话中途过期的令牌不会断开用户连接。PAT 只在连接时使用一次。
令牌在 ConnectWithAuthTokenAsync() 被调用之前过期
连接失败——从你的后端获取新令牌并重试。
令牌在活动会话期间过期
会话不受影响——令牌只在连接时检查,不会在会话持续期间保持有效。
应用在令牌过期后重启
始终在启动时获取新令牌——不要在多次启动之间缓存令牌。
使用示例
示例 1:按会话发放令牌的 LMS 平台
一个企业安全培训平台会在 LMS 登录响应中发放 Convai PAT。学员通过身份验证时,令牌在服务器端生成,并与 LMS 会话数据一并交付。
示例 2:按住户轮换令牌的共享终端
每位住户登录共享培训终端后,从后端获取一个新的 PAT,与模拟交互,然后注销。注销时,令牌会被显式撤销,因此无法再次使用。
示例 3:适用于长时间运行应用的按需令牌刷新
工业培训模拟可以运行数小时。虽然活动会话不受令牌过期影响,但在过期后启动的新会话需要新的令牌。在重新连接之前,请使用后端的延长或重新生成端点。
故障排查
连接立即失败
apiAuthToken 为 null —— 后端获取失败
请在控制台查看 令牌获取失败 日志;验证你的后端端点 URL 和身份验证请求头。
401 连接时来自 Convai 的身份验证错误
令牌在之前已经过期或被撤销 ConnectWithAuthTokenAsync()
务必在连接前立即获取新令牌——切勿在多个会话之间重复使用缓存的令牌。
连接失败并出现 ConfigAuthTokenModeRequired
项目的 ConvaiSettings asset 仍然设置为 AuthMode 设为 ApiKey
设置为 AuthMode 到 AuthToken 在 Edit > Project Settings > Convai SDK > Credentials,即使那里未配置端点 URL 也是如此。
apiAuthToken 在后端响应中为 null
请求体格式错误或后端调用中缺少 CONVAI-API-KEY 请求头
确保请求体为 {} 且请求头存在。在后端记录原始响应以检查错误。
令牌在开发环境中可用,但在生产构建中失败
ConvaiSettings.asset API 密钥字段为空,并且未获取 PAT
确认令牌获取调用已完成,并且其结果在应用尝试连接前已传递给 ConnectWithAuthTokenAsync() 。
下一步
自定义身份提供器自定义凭证提供器最后更新于
这有帮助吗?