在获得访问令牌后,我正试图解决发出补丁请求的问题。这个相同的访问令牌适用于对https://${appDomain}/api/v2/users/${userid}的get请求。但它以";请求失败,状态代码为401〃;当尝试使用它来修补app_metadata时。
使用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)
})
在编写了shadow-boxing文档后,我在axios.patch调用中发现了一个语法错误。格式应该如下,这解决了我的问题。我正在传递数据:{…}而它本应该是这样的:
axios.patch(
`https://${appDomain}/api/v2/users/${userid}`,
{
app_metadata: { stripeCustomerId: customer.id },
},
{
headers: {
Authorization: `${token_type} ${access_token}`,
},
}
)