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

Amadeus Node SDK报AuthenticationError 401无效访问令牌问题

问题原因及解决方案

你遇到的报错核心是keymanagement.service.InvalidAPICallAsNoApiProductMatchFound,不是真的access token无效,是当前账号/应用没有对应接口的调用权限,或者SDK运行逻辑异常,常见原因和解决方法如下:

  • 首先检查应用的API权限配置
    登录Amadeus开发者后台进入你的应用详情页,找到产品开通列表,确认你已经添加了Hotel Offers Search v2这个API产品,测试环境的权限申请是即时生效的,不需要等待审核。很多新手创建应用后忘记手动开通对应接口权限,就会出现这类看似token无效的报错。
  • 确认环境和凭据匹配
    你当前请求的是测试环境端点test.api.amadeus.com,确认你使用的CLIENT_ID和CLIENT_SECRET是测试环境的凭据,不要混用生产环境的凭据调用测试环境接口,反之也不允许。
  • 调整SDK初始化逻辑
    Next.js的模块顶层初始化逻辑会在热重载时重复执行,容易导致SDK内部缓存的token异常,你可以把Amadeus实例的初始化移到请求处理函数内部,同时显式指定运行环境,修改后的参考代码如下:
    import Amadeus from 'amadeus';
    
    const { CLIENT_ID, CLIENT_SECRET } = process.env;
    
    const handler = async (req, res) => {
      const amadeus = new Amadeus({
        clientId: CLIENT_ID,
        clientSecret: CLIENT_SECRET,
        hostname: 'test' // 测试环境填test,生产环境填production
      });
    
      let offersData = {};
      try {
        offersData = await amadeus.shopping.hotelOffers.get({
          cityCode: 'LON',
        });
      } catch (e) {
        console.error('error:', e);
        return res.status(500).json({ error: e.description });
      }
    
      res.status(200).json(offersData.data || offersData);
    };
    
    export default handler;
    
  • 升级SDK版本
    旧版本的amadeus-nodeSDK在Node.js 16+环境下存在token生成逻辑的已知bug,会生成无效token,你可以升级SDK到最新版本后重试。
  • 手动校验权限
    你可以用之前curl请求拿到的有效token,直接调用对应酒店查询接口,如果同样返回401,就可以确定是API权限未开通的问题;如果请求成功,则是SDK运行异常导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:06:03