如何将 Google OAuth2 ID 令牌与 node.js / passport.js 一起使用来验证用户是否有效并经过身份验证?
How can I use the Google OAuth2 ID token with node.js / passport.js to verify if the user is valid and authenticated?
在我的前端,我正在使用 vue.js
(这并不重要)并且通过 Google OAuth 流程,我从 id_token
得到一个 [=16] =]
let googleAuthIdToken = await this.auth2.currentUser
.get()
.getAuthResponse().id_token;
然后我想将该令牌传递到我的 node.js 服务器(Express / Passport)以验证是否允许用户登录。
我想使用 passport 并在响应中向前端发回一个 JWT。
有人可以指导我如何完成这个吗?
使用名为 googleapis
的节点模块更容易,安装后,导入模块。
import { google } from 'googleapis';
然后您需要通过指定 CLIENT_ID, CLIENT_SECRET, REDIRECT_URL
.
创建一个 OAuthClient
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URL,
);
然后您可以使用 oauth2Client
.
从 google 获取令牌
const {tokens} = await oauth2Client.getToken(code);
oauth2Client.setCredentials(tokens);
为了获取必要的用户信息存储在自己的数据库中,需要调用此方法。
const plus = google.plus({ version: 'v1', oauth2Client });
const me = await plus.people.get({ userId: 'me' });
me
将包含您要查找的用户信息,一旦获得用户信息,您就可以使用 passport js 存储它。
在我的前端,我正在使用 vue.js
(这并不重要)并且通过 Google OAuth 流程,我从 id_token
得到一个 [=16] =]
let googleAuthIdToken = await this.auth2.currentUser
.get()
.getAuthResponse().id_token;
然后我想将该令牌传递到我的 node.js 服务器(Express / Passport)以验证是否允许用户登录。
我想使用 passport 并在响应中向前端发回一个 JWT。
有人可以指导我如何完成这个吗?
使用名为 googleapis
的节点模块更容易,安装后,导入模块。
import { google } from 'googleapis';
然后您需要通过指定 CLIENT_ID, CLIENT_SECRET, REDIRECT_URL
.
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URL,
);
然后您可以使用 oauth2Client
.
const {tokens} = await oauth2Client.getToken(code);
oauth2Client.setCredentials(tokens);
为了获取必要的用户信息存储在自己的数据库中,需要调用此方法。
const plus = google.plus({ version: 'v1', oauth2Client });
const me = await plus.people.get({ userId: 'me' });
me
将包含您要查找的用户信息,一旦获得用户信息,您就可以使用 passport js 存储它。