首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >google-auth-library v.1.0如何仅用于身份识别?

google-auth-library v.1.0如何仅用于身份识别?
EN

Stack Overflow用户
提问于 2018-01-11 00:09:54
回答 1查看 1.3K关注 0票数 1

我一直使用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,我只需要验证身份。这是我的代码:

代码语言:javascript
复制
 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。

现在我有了这个错误:

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 05:39:16

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

代码语言:javascript
复制
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);
});

这是最近才测试的。

谷歌需要更新他们的文档。

请注意,您也可以为验证id标记选项指定一个maxAge。

下面是从源代码中复制的接口

代码语言:javascript
复制
export interface VerifyIdTokenOptions {
  idToken: string;
  audience: string|string[];
  maxExpiry?: number;
}

如您所见,idTokenaudience是必需的,而maxExpiry是可选的。

来源可以在here上找到

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48191603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档