我正试图从facebook获得一个长期访问令牌。。。根据文档,为了安全起见,我需要从服务器端获取。如果我从客户端获取,它可以正常工作,但我应该遵循指导原则。。以下是我正在做的事情——你能告诉我为什么我会收到服务器端错误"引用错误:未定义获取"吗?
首先,我创建了一个从前端请求长寿命令牌的路由。为了获得长寿命令牌,我需要使用短命令牌,所以我在req-params中发送短命令牌。变量userAccessTokenShort有效且已定义。
const newLongLivedUserAccessToken = await fetch(`/api/autoquotegenerators/longLivedUserToken/${userAccessTokenShort}`, {
method: 'GET',
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json; charset=UTF-8",
},
})
const newLongUserTokenRes = await newLongLivedUserAccessToken.json()
console.log(newLongUserTokenRes)
然后,在我的express服务器上,我创建了一个路由,用于处理到FacebookGraph API的获取请求。这就是我得到参考错误的地方。
//Get Long Lived User Access Token on Backend /express route
router.get('/longLivedUserToken/:shortLived', (req, res) => {
try {
const getLongToken = fetch(`https://graph.facebook.com/v7.0/oauth/access_token?grant_type=fb_exchange_token&client_id=#############&client_secret=################&fb_exchange_token=${req.params.shortLived}`)
.then(token => res.send(token))
} catch (error) {
console.log(error)
}
})
如果一切顺利,则应将新令牌发送回客户端。
谢谢你的帮助!
node.js中没有内置fetch()
函数。如果你想要在浏览器中看起来很像fetch()
的东西,你可以看看NPM中的node-fetch
模块。
或者,node.js中有很多模块可供选择。我最喜欢的是got()
。
仅供参考,用于获取http请求的内置接口是http.request()
或http.get()
,但它们是较低级别的,需要比上述任何模块都多的代码行才能完成简单的操作。