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

Spring Boot中OpenAI API Key无效引发401错误的排查

解决Spring Boot集成OpenAI API返回401 Unauthorized的问题

1. 静态字段无法通过@Value注入配置值(最可能的原因)

你的API_KEY被定义为public static final,但Spring的@Value注解无法直接注入静态字段,这会导致API_KEY始终是空字符串,最终生成的TOKEN为Bearer (空值拼接),自然会被OpenAI接口判定为未授权。

修正方案:

去掉static修饰符改为实例字段,或通过@PostConstruct初始化静态字段:

// 方案1:移除static,改为实例字段
@Value("${api.key}")
private String apiKey;

public final String TOKEN = "Bearer " + apiKey;

// 方案2:保留static,通过@PostConstruct赋值
private static String apiKey;

@Value("${api.key}")
public void setApiKey(String key) {
    apiKey = key;
}

public static final String TOKEN = "Bearer " + apiKey;

2. 请求头配置不完整或错误

检查OpenAIConstants.AUTHORIZATION的实际值是否为Authorization(注意大小写),OpenAI API严格要求该键名,拼写错误会直接导致鉴权失败。

同时,需显式设置请求的Content-Type为application/json,未设置会导致OpenAI无法解析请求体,间接返回401:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); // 添加该行
headers.add(OpenAIConstants.AUTHORIZATION, OpenAIConstants.TOKEN);

3. API Key或账号状态异常

即使更换新Key,仍需确认:

  • 该Key所属账号未被封禁,且处于正常状态
  • Key拥有调用v1/completions接口的权限(部分限制级Key无法访问特定模型)
  • 账号存在可用余额,OpenAI在余额耗尽时也会返回401错误

4. RestTemplate配置问题

若RestTemplate未配置Jackson消息转换器,会导致请求体序列化异常,OpenAI无法识别请求内容进而返回401。确保配置正确的消息转换器:

@Bean
public RestTemplate restTemplate() {
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
    return restTemplate;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:07:17