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

Chainlink外部适配器调用Spotify API报错问题排查

问题原因与修复方案

核心错误原因

  • 对大小写敏感的Spotify艺人ID执行了强制大写转换:Spotify返回的艺人ID为大小写严格敏感的字符串,代码中const artistID = validator.validated.data.artist.toUpperCase()会把合法ID里的小写字符转为大写,导致请求路径参数错误,触发Spotify返回404状态码。调用jsonplaceholder接口时ID为纯数字,大写转换不影响结果,因此可以正常返回。
  • 硬编码的Access Token会过期:Spotify Client Credentials授权流下发的访问令牌有效期仅为1小时,硬编码写死的令牌会快速失效,触发Spotify返回401未授权错误。

修复步骤

  1. 删除艺人ID的强制大写逻辑,保留原始ID的大小写格式,可增加trim操作去除首尾空格:
// 原代码
// const artistID = validator.validated.data.artist.toUpperCase()
// 修改后代码
const artistID = validator.validated.data.artist.trim()
  1. 替换硬编码令牌逻辑,新增动态获取有效访问令牌的逻辑:
    首先确认已经将Spotify的客户端ID、客户端密钥配置到环境变量API_ID和API_KEY中,然后在发起艺人信息请求前调用令牌接口获取最新令牌:
const axios = require('axios')

const createRequest = async (input, callback) => {
  const apiID = process.env.API_ID
  const apiKey = process.env.API_KEY
  const validator = new Validator(callback, input, customParams)
  const jobRunID = validator.validated.id
  const artistID = validator.validated.data.artist.trim()
  const url = `https://api.spotify.com/v1/artists/${artistID}`

  // 动态获取有效access token
  const tokenRes = await axios.post(
    'https://accounts.spotify.com/api/token',
    'grant_type=client_credentials',
    {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Authorization': `Basic ${Buffer.from(`${apiID}:${apiKey}`).toString('base64')}`
      }
    }
  )
  const token = tokenRes.data.access_token

  const config = {
    url,
    headers: {
      'Accept': 'application/json',
      'Authorization': `Bearer ${token}`
    }
  }
  // 后续原有Axios请求逻辑
}
  1. 补充请求错误捕获逻辑,打印Spotify返回的完整错误信息,方便后续排查:
axios(config)
  .then(res => callback(200, {
    jobRunID,
    data: res.data,
    statusCode: 200
  }))
  .catch(e => callback(500, {
    jobRunID,
    error: e.response ? e.response.data : e.message,
    statusCode: e.response ? e.response.status : 500
  }))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:04