Javascript 无法验证ID令牌:jwt.split不是函数

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(您可以使用任何

我正在尝试验证Node.js服务器上的Google ID令牌

我得到这个错误:

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是否未定义/空