我得到403“当您尝试从第三方API(Klaviyo)获取数据时,您必须指定API密钥才能发出请求。”
const { id } = req.body
request.get({
url: `https://a.klaviyo.com/api/v1/person/${id}`,
headers: {
api_key: process.env.KLAVIYO_API_KEY
}
}, (error, response, body) => {
const profile = JSON.parse(body)
console.log(profile)
if (response.statusCode === 200) {
res.json({ profile, status: 201 })
} else {
res.json({ error: 'Did not get customer data', status: 500, response: response, err: error })
}
})
我也尝试过:
标题:{“授权”:[API_KEY]}
数据:{api_key:[API_KEY]}
解决方案:
const { id } = req.body
request.get({
url: `https://a.klaviyo.com/api/v1/person/${id}`,
qs: {
api_key: process.env.KLAVIYO_API_KEY
}
}, (error, response, body) => {
const profile = JSON.parse(body)
console.log(profile)
if (response.statusCode === 200) {
res.json({ profile, status: 201 })
} else {
res.json({ error: 'Did not get customer data', status: 500, response: response, err: error })
}
})
答案 0 :(得分:2)
简短回答:在params.api_key下添加(作为GET请求的一部分)。
来自klaviyo documentation:
“您通过提供一个私有API密钥作为每个请求的一部分来对People API进行身份验证。(...)通过每个请求中的api_key参数进行身份验证。它可以作为GET或POST参数的一部分发送。”
答案 1 :(得分:0)
我认为您正在使用POST标头方法使用GET请求。在GET中,您需要将其放在URL
中