getValidAccessToken

suspend fun getValidAccessToken(clientId: String, clientSecret: String): String

获取有效的访问令牌(自动刷新) 提供统一的获取令牌方法,实现自动检查和刷新逻辑

官方文档参考:

  • vds-docs/基础接口/签名交换.md - 签名交换流程

  • vds-docs/基础接口/签名换新.md - 签名换新机制

  • vds-docs/开始接入/快速跑通流程.md - 完整接入流程示例

自动刷新逻辑(遵循官方文档伪代码):

  1. 如果没有令牌或已过期:

    • 调用 exchangeToken(clientId, clientSecret) 获取新令牌(签名交换)

    • 如果是 OAuth 流程,需要重新进行 OAuth 授权

  2. 如果剩余有效期 <= 300 秒(5 分钟):

    • 如果是 OAuth 令牌且有 refresh_token:调用 refreshOAuthToken()

    • 如果是签名交换令牌:调用 refreshToken()

  3. 刷新失败:

    • 捕获异常并记录日志

    • 回退到 exchangeToken(clientId, clientSecret) 重新获取

令牌有效期说明:

  • 默认有效期:3600 秒(1 小时)

  • 刷新窗口:过期前 300 秒(5 分钟)

  • 刷新模式:exchange_current_access_token

示例:

// 在发起 API 请求前调用
val accessToken = authManager.getValidAccessToken(clientId, clientSecret)

// 使用 accessToken 发起请求
httpClient.get("https://api.example.com/data") {
header("Authorization", "Bearer $accessToken")
}

Return

当前或刷新后的访问令牌(accessToken),可直接用于 API 认证

Parameters

clientId

应用 ID(用于签名交换回退,格式 vap_xxxx)

clientSecret

应用密钥(用于签名交换回退)

Throws

Exception

当网络错误或认证失败时抛出(已在内部捕获并回退)