FullContact API返回400错误:Access token含无效字符排查求助
解决FullContact API 400错误:令牌包含无效字符的问题
嘿,我看了你的代码和错误信息,大概率是API令牌的使用方式出问题了,咱们一步步来排查:
核心问题:占位符未正确移除
你代码里的Authorization头写的是"Bearer {iWotm_auth_token}",这里的{}是典型的占位符标记,你需要把整个{iWotm_auth_token}替换成你实际的FullContact API密钥,绝对不能保留大括号。比如你的密钥是abc123xyz,应该写成"Bearer abc123xyz"。大括号属于API令牌里不允许的特殊字符,这就是触发400错误的直接原因。额外验证步骤
虽然你说已经处理过换行和空格,但替换占位符时可能不小心引入了多余的空格,建议你把替换后的令牌复制到jwt.io再验证一次,确保令牌本身没有任何额外字符(比如开头/结尾的空格、换行符)。代码优化与补充
另外给你两个代码层面的小建议,能帮你避免其他潜在问题:- 加上
Content-Type: application/json请求头,因为你发送的是JSON格式的请求体,FullContact API可能需要这个头才能正确解析; - 把嵌套的
.then()改成链式调用,同时加上.catch()捕获错误,方便后续排查问题。优化后的代码如下:
const http = require('http'); const fetch = require('node-fetch'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); fetch('https://api.fullcontact.com/v3/person.enrich',{ method: 'POST', headers: { "Authorization": "Bearer 你的实际API密钥", // 这里替换成真实密钥,去掉大括号 "Content-Type": "application/json" // 新增这个头 }, body: JSON.stringify({ "email": "bart@fullcontact.com", "webhookUrl": "http://www.fullcontact.com/hook" }) }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('请求出错:', err)); // 新增错误捕获 server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });- 加上
快速测试技巧
你可以先用curl命令测试API是否能正常工作,排除代码层面的问题:curl -X POST https://api.fullcontact.com/v3/person.enrich \ -H "Authorization: Bearer 你的实际API密钥" \ -H "Content-Type: application/json" \ -d '{"email": "bart@fullcontact.com", "webhookUrl": "http://www.fullcontact.com/hook"}'如果curl请求成功,说明问题确实出在NodeJS代码的令牌替换上;如果curl也返回同样的400错误,那你需要去FullContact控制台确认令牌是否正确生成、权限是否足够。
内容的提问来源于stack exchange,提问作者user38041
相关产品推荐
相关产品推荐

