Google Signs In for Websites检索用户ID?

时间:2018-06-05 17:21:48

标签: node.js google-signin

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);

0 个答案:

没有答案