Google登录网站 - 如何检索用户ID?
我正在尝试为我的Google登录网站创建后端身份验证。
如何在验证(req.query.id_token)验证令牌后检索用户ID?
我正在努力阅读承诺,但我没有得到结果。 我希望以下代码可以工作:
verify(req.query.id_token).then(function(result) {
console.log(result); // undefined
}).catch(console.error);
在控制台中返回undefined。 如何检索const用户标识和有效负载? 我是否必须从Google更改NodeJS的客户端库函数?
我的后端有以下代码:
'use strict';
const CLIENT_ID = 'xxxxxxxxxxxxxxxx';
const fs = require('fs');
const http = require('http');
const https = require('https');
const privateKey = fs.readFileSync('sslcert/server.key', 'utf8');
const certificate = fs.readFileSync('sslcert/server.crt', 'utf8');
const credentials = {key: privateKey, cert: certificate, passphrase: 'sssh, secret'};
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
// your express configuration here
app.use(bodyParser.json()); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // to support URL-encoded bodies
app.get('/tokensignin', function (req, res) {
verify(req.query.id_token).catch(console.error);
});
const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);
httpServer.listen(8080);
httpsServer.listen(8443);
/*
* Google API Client Library
*/
const {OAuth2Client} = require('google-auth-library');
const client = new OAuth2Client(CLIENT_ID);
async function verify(token) {
const ticket = await client.verifyIdToken({
idToken: token,
audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
// Or, if multiple clients access the backend:
//[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
});
const payload = ticket.getPayload();
const userid = payload['sub'];
// If request specified a G Suite domain:
//const domain = payload['hd'];
}
// verify().catch(console.error);