Node.js 如何从jwks rsa的getSigningKey函数中获取公钥

Node.js 如何从jwks rsa的getSigningKey函数中获取公钥,node.js,Node.js,我尝试了两个nodejs库“jwks-rsa”和“jwks-client”,以获取用于验证苹果登录的公钥。但是它在getPublicKey中的给定错误不是一个函数。 然后我控制台getSigningKey返回的键给了我-1。 我不知道为什么会这样 const header = token.split("."); const jwtHead = Buffer.from(header[0], "base64").toString();

我尝试了两个nodejs库“jwks-rsa”和“jwks-client”,以获取用于验证苹果登录的公钥。但是它在getPublicKey中的给定错误不是一个函数。 然后我控制台getSigningKey返回的键给了我-1。 我不知道为什么会这样

 const header = token.split(".");
        const jwtHead = Buffer.from(header[0], "base64").toString();
        const kid = JSON.parse(jwtHead).kid;

const jwksClient = require('jwks-client');
     const client = jwksClient({
          strictSsl: true, // Default value
          jwksUri:  process.env.APPLE_URL
        });

 client.getSigningKey(kid, (err, key) => {
            console.log(key)
          const signingKey = key.publicKey;
          console.log(signingKey);
        });

对我来说,它的工作原理与预期一样,我已尝试使用您的配置:

 const kid = '86D88Kf'; // specify kid explicitly
 const client = jwksClient({
      strictSsl: true,
      jwksUri:  'https://appleid.apple.com/auth/keys'
    });

 client.getSigningKey(kid, (err, key) => {
          console.log(key)
          const signingKey = key.publicKey;
          console.log(signingKey);
        });
我在回复中得到了合法的公钥:


可能您有一些配置错误。

您确定
kid
是合法的,并且您的
jwksUri
是正确的吗?是的,我完全确定,您可以在
jwksUri
键值中找到
kid
?或者GetSigningKey调用有任何错误吗?getSigning key返回我-1它没有返回公钥和它返回的其他东西。如果我无法在express中运行此函数,那么当我在serverless中运行它时,我得到的结果与您在此处显示的相同