📌  相关文章
📜  在 Node.js 中使用 Passport 进行 Google 身份验证(1)

📅  最后修改于: 2023-12-03 15:07:44.759000             🧑  作者: Mango

在 Node.js 中使用 Passport 进行 Google 身份验证

如果您正在构建一个需要用户身份验证的 Web 应用程序,那么 Passport 是一个非常有用的 Node.js 框架!Passport 支持多种身份验证策略,包括 Google 身份验证。在本文中,我们将介绍如何集成 Google 身份验证以确保您的应用程序的安全。

步骤1 - 创建 Google 身份验证 API

首先,您需要在 Google API 控制台中创建一个新项目并启用 Google 身份验证 API。请按照以下步骤操作:

  1. 访问 Google Cloud Console,并使用自己的 Google 账号登录。

  2. 点击“选择项目”按钮并创建一个项目。

  3. 为您的项目启用 Google 身份验证 API。

  4. 在“凭据”选项卡下创建 OAuth 2.0 客户端 ID。选择“Web 应用”并输入以下详细信息:

  • 应用名称
  • 授权 JavaScript 来源
  • 授权重定向 URI
  1. 点击“创建”,系统会为您生成一个客户端 ID 和客户端密码,将这些信息保存在一个安全的地方,我们将在后面使用。
步骤2 - 设置 Passport Google Strategy

在安装 Passport 和 Passport Google Strategy 之前,请确保已使用以下命令初始化您的 Node.js 项目:

npm init

或者:

yarn init

安装过程:

npm install passport passport-google-oauth20 --save

完成后,您可以开始设置 Passport Google Strategy。在实现此步骤之前,请确保您的项目已连接到 MongoDB。

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(new GoogleStrategy({
  clientID: 'Google Client ID',
  clientSecret: 'Google Client Secret',
  callbackURL: '/auth/google/callback'
},
(accessToken, refreshToken, profile, done) => {
    // 使用 profile 数据或创建新用户
}));

请注意,其中的参数如下:

  • clientID:Google API 控制台中创建的客户端 ID。
  • clientSecret:Google API 控制台中创建的客户端密码。
  • callbackURL:用户登录后将重定向到的 URL。

最后,创建一个用于初始化 Passport 的中间件:

app.use(passport.initialize());
app.use(passport.session());
步骤3 - 设置身份验证路由

在这个步骤中,我们将为用户身份验证设置一个路由。根据约定,此路由名称应设置为 auth/google,以激活 Google 身份验证策略。

app.get('/auth/google',
  passport.authenticate('google', { scope: ['profile'] })
);
步骤4 - 处理 Google 身份验证的回调

在用户成功登录并授权后,Google 身份验证 API 将重定向到我们在之前设置的 callbackURL 中。当用户访问此 URL 时,我们将在该路由中处理用户授权的回调。

app.get('/auth/google/callback',
  passport.authenticate('google', {failureRedirect: '/login'}),
  (req, res) => {
    // 验证成功,处理用户登录
    res.redirect('/');
  }
);

在回调函数中,我们可以验证用户身份并将用户数据存储在数据库中。一旦完成,我们将使用 res.redirect 将用户重定向到应用程序的主页。

结论

现在您已经知道如何使用 Passport 和 Google 身份验证创建安全的 Node.js Web 应用程序。Passport 提供了许多不同的身份验证策略,因此您可以选择最适合您应用程序的策略。祝您好运开始使用 Passport!