#node.js #authentication #oauth #axios #auth0
#node.js #аутентификация #oauth #axios #auth0
Вопрос:
Я бьюсь головой о стену, пытаясь решить проблему выдачи запроса на исправление после получения токена доступа. Этот же токен доступа работает для запросов get на https: // $ {AppDomain}/api/ v2/users/ $ {userid}. Но при попытке использовать его для исправления app_metadata происходит сбой с «Ошибка запроса с кодом состояния 401».
Использование NodeJS и Axios.
axios
.post(`https://${appDomain}/oauth/token`, {
grant_type: 'client_credentials',
client_id: clientId,
client_secret: clientSecret,
audience: `https://${appDomain}/api/v2/`,
})
.then(({ data: { access_token, token_type } }) => {
const jwt = jwtDecode(access_token)
axios
.patch(`https://${appDomain}/api/v2/users/${userid}`, {
data: {
app_metadata: { stripeCustomerId: customer.id },
},
headers: {
Authorization: `${token_type} ${access_token}`,
},
})
.then(({ data }) => {
console.warn('patch response', data)
})
.catch((err) => {
console.error('patch error', err) // <--- ERROR 401 happens here
res.send(err)
})
})
.catch((err) => {
console.error('token error', err)
res.send(err)
})
Ответ №1:
После документации по теневому боксу я обнаружил синтаксическую ошибку в моем вызове axios.patch. Формат должен был быть следующим, что устранило мои проблемы. Я передавал данные: {…}, когда это должно было быть так:
axios.patch(
`https://${appDomain}/api/v2/users/${userid}`,
{
app_metadata: { stripeCustomerId: customer.id },
},
{
headers: {
Authorization: `${token_type} ${access_token}`,
},
}
)