Javascript REST API - 您必须指定API密钥才能发出请求

时间:2018-04-11 10:55:34

标签: javascript get es6-promise

我得到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 })
    }
})

2 个答案:

答案 0 :(得分:2)

简短回答:在params.api_key下添加(作为GET请求的一部分)。

来自klaviyo documentation
“您通过提供一个私有API密钥作为每个请求的一部分来对People API进行身份验证。(...)通过每个请求中的api_key参数进行身份验证。它可以作为GET或POST参数的一部分发送。”

答案 1 :(得分:0)

我认为您正在使用POST标头方法使用GET请求。在GET中,您需要将其放在URL