You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Streamlabs API捐赠接口Token认证失败(401)求助

Streamlabs API 401 未授权问题

尝试使用用户设置中的Access Token向https://streamlabs.com/api/v2.0/donations发送POST请求(仅自用未注册应用),已复制完整250位Token放入Bearer请求头,但持续收到401响应,提示Token无效导致认证失败。

Kotlin代码实现

val jsonPayload = JSONObject().apply {
    put("skip_alert", "no")
    put("name", notification.senderName)
    put("message", notification.message)
    put("amount", notification.amount)
    put("currency", "USD")
}
            
Log.d(TAG, "Request payload: $jsonPayload")
val mediaType = "application/json".toMediaTypeOrNull()
val body = jsonPayload.toString().toRequestBody(mediaType)
val request = Request.Builder()
    .url("https://streamlabs.com/api/v2.0/donations")
    .post(body)
    .addHeader("accept", "application/json")
    .addHeader("content-type", "application/json")
    .addHeader("Authorization", "Bearer $apiToken")
    .build()
client.newCall(request).execute().use { response ->
    val responseBody = response.body?.string()
    val responseCode = response.code
}

Logcat输出

2025-03-02 00:53:55.370 23294-23294 AlertsApi    com.example.upialerts    D  Starting test alert
2025-03-02 00:53:55.371 23294-23346 AlertsApi    com.example.upialerts    D  Starting API call with token length: 250
2025-03-02 00:53:55.371 23294-23346 AlertsApi    com.example.upialerts    D  First 4 chars of token: ****...
2025-03-02 00:53:55.371 23294-23346 AlertsApi    com.example.upialerts    D  Request payload: {"skip_alert":"no","name":"Test Donation","message":"This is test donation","amount":1,"currency":"USD"}
2025-03-02 00:53:55.374 23294-23346 AlertsApi    com.example.upialerts   D  Request URL: https://streamlabs.com/api/v2.0/donations
2025-03-02 00:53:55.374 23294-23346 AlertsApi    com.example.upialerts   D  Request headers: accept: application/json
content-type: application/json
Authorization:
2025-03-02 00:53:55.802 23294-23346 AlertsApi    com.example.upialerts   D  Response code: 401
2025-03-02 00:53:55.803 23294-23346 AlertsApi    com.example.upialerts   D  Response headers: date:
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
access-control-allow-origin:*
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: authorization, content-type
cf-cache-status: DYNAMIC
set-cookie:
server: cloudflare
cf-ray:
2025-03-02 00:53:55.803 23294-23346 AlertsApi     com.example.upialerts  D  Response body: Unauthorized.
2025-03-02 00:53:55.803 23294-23346 AlertsApi     com.example.upialerts  E  API call failed with code: 401
2025-03-02 00:53:55.803 23294-23346 AlertsApi     com.example.upialerts  E  Error response: Unauthorized.
2025-03-02 00:53:55.803 23294-23346 AlertsApi     com.example.upialerts  E  Authentication failed - Invalid token

问题分析与解决建议

从Logcat输出能直接看到,请求的Authorization头是空的——虽然日志显示token长度为250,但实际发送时并未携带有效内容,这是导致401未授权的核心原因。

具体修复方向

  1. 检查apiToken变量有效性
    • 确认apiToken在使用前已正确赋值,比如从用户设置读取时是否出现空值、字符串截断或编码错误。可在添加请求头前增加日志(脱敏打印),验证变量确实持有完整Token。
  2. 修正请求头拼接逻辑
    • 确保"Bearer $apiToken"拼接无异常,比如Token是否包含换行、空格等非法字符,可通过trim()去除首尾空白后再拼接:
      .addHeader("Authorization", "Bearer ${apiToken.trim()}")
      
  3. 验证Token权限范围
    • 确认该Token拥有donations.create权限,可在Streamlabs账户的API设置页查看权限配置是否符合要求。
  4. 核对API端点正确性
    • 确认v2.0/donations端点适用于个人自用场景,可对照官方文档确认端点版本和使用规则。

内容的提问来源于stack exchange,提问作者mu0by4pi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:37:12