Javascript 无法验证ID令牌:jwt.split不是函数
我正在尝试验证Node.js服务器上的Google ID令牌 我得到这个错误:Javascript 无法验证ID令牌:jwt.split不是函数,javascript,node.js,identity,gitkit,Javascript,Node.js,Identity,Gitkit,我正在尝试验证Node.js服务器上的Google ID令牌 我得到这个错误: Unable to verify the ID Token: jwt.split is not a function 以下是我从谷歌官方文档中看到的代码链接: 看起来您需要安装像或这样的jwt框架。 我相信您需要服务器的第一个链接,也可能需要网站的第二个链接(网站上的更多信息)。在我的场景中,它在本地工作得很好,但在AWS lambda中,它导致了相同的错误报告,因此我最终使用了此URL和Axios(您可以使用任何
Unable to verify the ID Token: jwt.split is not a function
以下是我从谷歌官方文档中看到的代码链接:
看起来您需要安装像或这样的jwt框架。
我相信您需要服务器的第一个链接,也可能需要网站的第二个链接(网站上的更多信息)。在我的场景中,它在本地工作得很好,但在AWS lambda中,它导致了相同的错误报告,因此我最终使用了此URL和Axios(您可以使用任何HTTP客户端)要检查用户的令牌有效性和域,请执行以下操作: {id_令牌} 这就是想法:
//googleTokenValidatorService
const ENV = require('../config.json');
const AXIOS = require('axios');
function getToken(token) {
return AXIOS.get(ENV.GOOGLE_VALIDATION_URL + token)
}
function validate(token){
return new Promise((resolve, reject) => {
getToken(token)
.then(
(response) => {
if(isTokenOk(response.data)){
resolve(response.data)
}else{
reject({status:401, message:"You do not have permission to access this resource."})
}
},
(error) => {
console.log("--- status " + error.response.status + " with token")
console.log(token)
reject({status:401, message:"Invalid google token."})
}
)
})
}
const acceptableHds = new Set(
['validDomain1.com', 'validDomain2.com']
);
const acceptableClientIDs = new Set(
[ENV.CLIENT_ID_WEB,ENV.CLIENT_ID_IOS, ENV.CLIENT_ID_ANDROID]
)
function isTokenOk(payload){
return payload &&
new Date(payload.exp * 1000) > new Date() &&
acceptableClientIDs.has(payload.aud) &&
acceptableHds.has(payload.hd)
}
module.exports = {
validate
}
然后在执行某些操作之前使用它进行验证:
//some other file
return googleUserValidator.validate(request.headers.token)
.then(productService.getProductDetails.bind({id:request.pathParams.id}))
.then(OK)
.catch(SERVER_ERROR);
这对我来说已经足够了,希望它能帮助别人。我已经安装了google oauth jwt和jwt,但错误仍然存在。@Master,您是否遵循这个快速开始?是的,我正在关注它。现在错误更改为:密钥必须是缓冲区?您找到修复方法了吗?我也有同样的错误。如果运气好,请发布一个answerCheck,来自客户端的idToken是否未定义/空