PHP调用API返回Bad API Key错误,但相同密钥在Postman中正常
解决PHP调用API返回"Bad API Key"的问题
可能的原因及修复方案
检查Authorization头格式
多数API的Authorization头要求携带前缀(如Bearer或Token),你当前代码直接拼接密钥,而Postman可能自动添加了前缀。比如API要求Bearer认证时,需修改头信息:curl_setopt($client, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $apiKey));可直接复制Postman中使用的完整Authorization头格式。
补全必要请求头
CURLOPT_HTTPHEADER会覆盖默认请求头,可能遗漏了API要求的其他字段(如Content-Type)。参照Postman的完整请求头,补充所有必要项:curl_setopt($client, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $apiKey, 'Content-Type: application/json' ));清理API密钥的无效字符
确认$apiKey与Postman中使用的密钥完全一致,无多余空格、换行符。可通过trim()去除首尾空白:$apiKey = trim('MY API KEY');调试实际发送的请求头
开启curl调试模式,对比实际发送的请求头与Postman的差异:curl_setopt($client, CURLINFO_HEADER_OUT, true); $response = curl_exec($client); // 打印实际发送的请求头 $requestHeader = curl_getinfo($client, CURLINFO_HEADER_OUT); echo "<pre>$requestHeader</pre>";对齐请求方法
Postman可能使用POST方法,而curl默认是GET。若需发送POST请求,需添加配置:curl_setopt($client, CURLOPT_POST, true); // 若需传递参数,补充: // curl_setopt($client, CURLOPT_POSTFIELDS, json_encode($yourParams));
内容的提问来源于stack exchange,提问作者user2373804
相关产品推荐
相关产品推荐

