如何使用 Passport 在 Node.js Express 应用程序中实现 OAuth2 身份验证?

问题描述 投票:0回答:1

**我正在开发 Node.js Express 应用程序,我想使用 Passport.js 实现 OAuth2 身份验证。具体来说,我希望允许用户使用他们的 Google 帐户登录。 **

我已经设置了基本的 Express 应用程序并安装了 Passport,但我不确定集成 Google OAuth2 的确切步骤。

这是我到目前为止所做的: 1. 安装了所需的 npm 软件包(express、passport、passport-google-oauth20)。 2. 创建Google Developer Console项目并获取客户端ID和客户端密钥。 3. 使用本地策略设置 Passport 中间件以进行电子邮件/密码登录。

现在,我需要有关如何配置 Passport 进行 Google OAuth2 身份验证以及如何在经过身份验证后处理用户会话的指导。

如果有人可以提供分步指南或向我指出一些代码示例或教程,我将不胜感激。谢谢!

我按照官方文档为我的 Node.js Express 应用程序使用 Passport.js 设置 Google OAuth2 身份验证。我安装了所需的 npm 包,创建了一个 Google Developer Console 项目,并获取了客户端 ID 和客户端密钥。我还使用电子邮件/密码登录的本地策略配置了 Passport 中间件,该策略按预期工作。

预期结果:

我预计,在实施 Google OAuth2 策略后,当用户单击我网站上的“使用 Google 登录”按钮时,他们将被重定向到 Google 进行身份验证。身份验证成功后,他们将被重定向回我的网站,他们的用户数据将存储在我的数据库中。随后,他们将登录并能够访问受保护的路由。

实际结果:

但是,当我单击“使用 Google 登录”按钮时,我会被重定向到 Google 进行身份验证,并且该部分工作正常。但在我通过 Google 进行身份验证后,我没有按预期重定向回我的网站。相反,我收到“无法 GET /auth/google/callback”错误,并且用户数据未保存到我的数据库中。

我已经仔细检查了我的代码是否有任何拼写错误或配置错误,但无法识别问题。

任何人都可以帮助我了解可能导致此错误的原因以及如何在 Node.js Express 应用程序中正确配置 Passport.js 以进行 Google OAuth2 身份验证吗?

node.js express oauth-2.0 google-oauth passport.js
1个回答
0
投票

该错误消息告诉您,您的服务器 Express 应用程序未处理

/auth/google/callback
路径。您需要在 Express 应用程序代码中设置该路线。

类似:

app.get("/auth/google/callback", async (req, res) => { ... } )

这是他们在身份验证后将被重定向的地方。这里的逻辑将取决于您正在使用的特定 OAuth 2.0 流程。

© www.soinside.com 2019 - 2024. All rights reserved.