Почему я получаю ошибку 401 при попытке исправить Auth0 app_metadata с помощью API управления?

#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}`,
                  },
                }
              )