node.js - google-auth-library v.1.0 如何仅用于身份验证?

标签 node.js identity google-authentication

我一直使用 google-auth-library@0.10.0 nodejs 只是为了在我的 api 服务中验证用户身份,现在它更改为 1.0,一切都损坏了。

我之前使用过这里的示例:

https://developers.google.com/identity/sign-in/web/backend-auth

现在我不知道如何使用新库验证身份。 示例如下:https://github.com/google/google-auth-library-nodejs 解释了如何访问 google api,我只需要验证身份。 这是我的代码:

 const GoogleAuth = require('google-auth-library');
    const auth = new GoogleAuth.GoogleAuth();
    const google = require('googleapis');
    const authData = {
      'googleAuth': {
        'clientID': 'xxxxxxxxxxx-aaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com',
        'clientSecret': 'sssssssssssssssssssssssss',
        'callbackURL': 'http://localhost:121212/auth/'
      }
    };
const CLIENT_ID = authData.googleAuth.clientID;
    function verifyToken(token) {
      let tokenPromise = new Promise(function(resolve, reject) {
        client.verifyIdToken(
          token,
          CLIENT_ID,
          // Or, if multiple clients access the backend:
          //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3],
          function(e, login) {
            if (e) {
              return reject(e);
            } else {
              var payload = login.getPayload();
              var userid = payload['sub'];
              //console.log(payload, userid, e, login);
              return resolve(login);
              // If request specified a G Suite domain:
              //var domain = payload['hd'];
            }

          });
      });

      return tokenPromise;

    };

它工作正常,只是为了获取 googleUserId。

现在我遇到了这个错误:

错误:此方法接受选项对象作为第一个参数,其中包括 idToken、audience 和 maxExpiry。

我知道我没有正确传递参数,也许它不是要使用的方法..但是我怎么知道哪个方法以及它如何接受参数???我找不到任何有关 google-auth-library@1.0 的文档...有人在生产中使用它?

最佳答案

verifyIdToken 已更改。这是一个有效的示例。

import { OAuth2Client } from 'google-auth-library';
const client = new OAuth2Client(
  'xxxxxxxxxxx-aaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com,
  'sssssssssssssssssssssssss',
  'http://localhost:121212/auth/',
);
client.verifyIdToken({
  idToken: TOKEN,
  audience: CLIENT_ID_1 // If you have multiple [CLIENT_ID_1, CLIENT_ID_2, ...]
}, (err, login) => {
  console.log(login);
});

最近刚刚测试过。

Google 需要更新其文档。

请注意,您也可以为验证 ID token 选项指定 maxAge。

这是从源代码复制的界面

export interface VerifyIdTokenOptions {
  idToken: string;
  audience: string|string[];
  maxExpiry?: number;
}

正如您所看到的,idTokenaudience 是必需的,maxExpiry 是可选的。

来源可以找到here

关于node.js - google-auth-library v.1.0 如何仅用于身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191603/

相关文章:

android - 是否还需要调用 GoogleApiClient connect() 和 disconnect()?

node.js - NodeJS 中可以使用 observable 吗?

javascript - 使用 webRTC 获取屏幕列表并选择要在 Electron 中记录的屏幕

javascript - 模块导出习惯用法之间的区别

java - id key 的自定义包装

linux - 我如何确定哪个进程在 Linux 上进行 UDP 通信?

node.js - 如何在环回中将模型设置为变量?

import - 为什么 BCP 会出现 "Valid table name is required for in, out or format"错误?

使用React Frontend的Django Google登录

google-sheets - 无需Oauth token 即可访问Google电子表格API