【发布时间】:2021-05-09 04:03:50
【问题描述】:
所以我正在尝试对第三方 API 提供商进行 API 调用。在我的 nodejs 应用程序中接收新令牌没有问题,但是当我尝试在 get 函数中使用它时,我只收到 403 错误。但是,如果我通过 Postman 获取令牌,它就可以正常工作(在应用程序中),这对我来说似乎很奇怪?
如果我尝试在 Postman 的 get 调用中使用从 nodejs 应用程序获取的令牌,它是一样的,它不会工作。
我已多次检查从我的 nodejs 应用程序获取的令牌是否有任何错误,但无法理解为什么它不起作用。我使用 firebase 来存储它,它每次都会更新,没有任何问题。
获取和存储令牌的代码如下所示:
const response = await axios.request(options)
let token = response.data.access_token
console.log(token) // receiving a new token every time, no issues
db.doc(`/company1/tokens`).update(tokenObj = { token: token }).then(
console.log("lagring ferdig")
)
api 调用的代码如下所示:
let doc = await db.collection(`/company1`).doc("tokens").get()
let data = doc.data()
//console.log(data.token)
const request = await fetch(`https://xxxxx/api/v2/company`, {
method: 'GET',
headers: {
Authorization: `Bearer ${data.token}`,
'Content-Type': 'application/json'
}
})
所以澄清一下:如果我只是将通过 Postman 获得的令牌粘贴到 Firestore 文档中,它就可以正常工作。
知道什么会导致这种情况吗?非常感谢任何帮助。
【问题讨论】:
-
在 jwt.io 中粘贴两个版本的令牌并进行比较,可能您在节点应用程序中获取令牌的方式有误,比较并看看有什么区别以获得提示到哪里看。您在节点应用中对令牌的请求可能不正确。
-
非常感谢,发现使用这个的范围有问题。