Javascript rest api - вы должны указать ключ api, чтобы сделать запрос

Я получаю сообщение 403 «Вы должны указать ключ API для выполнения запроса» при попытке получить данные из стороннего API (Klaviyo).

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
0
912
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, вы используете запрос GET с методом заголовка POST. В GET вам нужно поместить его в URL

Ответ принят как подходящий

Краткий ответ: добавьте его в params.api_key (как часть запроса GET).

От klaviyo документация:
«Вы аутентифицируетесь в People API, предоставляя один из ваших закрытых ключей API как часть каждого запроса. (...) Аутентификация происходит через параметр api_key в каждом запросе. Он может быть отправлен как часть параметров GET или POST».

Так ты имеешь в виду вот так? : request.get({ url: '...', params: { api_key: [API_KEY] } })

Nicolas T 11.04.2018 13:16

Для request, я думаю, вам нужно будет использовать qs: request.get({ url: '...', qs: { api_key: [API_KEY] } })

sergelia 11.04.2018 13:19

Другие вопросы по теме