google-auth-library v.1.0 仅用于身份验证如何使用?
google-auth-library v.1.0 how to use just for identity?
我一直在使用 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 apis,我只需要验证身份。
这是我的代码:
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、受众和 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 令牌选项指定一个 maxAge。
这是从源代码复制过来的界面
export interface VerifyIdTokenOptions {
idToken: string;
audience: string|string[];
maxExpiry?: number;
}
如您所见,idToken
和 audience
是必需的,maxExpiry
是可选的。
可以找到来源here
我一直在使用 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 apis,我只需要验证身份。 这是我的代码:
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、受众和 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 令牌选项指定一个 maxAge。
这是从源代码复制过来的界面
export interface VerifyIdTokenOptions {
idToken: string;
audience: string|string[];
maxExpiry?: number;
}
如您所见,idToken
和 audience
是必需的,maxExpiry
是可选的。
可以找到来源here