在现代 Web 应用程序中,用户认证是至关重要的。许多 Web 应用程序都提供了与第三方平台进行认证的功能。这里介绍了如何使用 Express.js 框架来实现与谷歌的 OAuth2 认证,并获取谷歌用户的信息。
OAuth2 认证
OAuth2 是一种标准的用户认证协议。它是一个基于令牌的授权协议,用于在 Web 应用程序之间传输用户认证信息。 OAuth2 允许 Web 应用程序使用第三方平台(如谷歌)来进行用户认证,而不是自己验证用户的凭据。
在 OAuth2 中,客户端(应用程序)向授权服务器发送请求以获取访问资源的凭证。授权服务器要求用户授权,然后将访问令牌(access token)返回给客户端。客户端可以使用访问令牌来访问特定的资源。
使用 Express.js 实现谷歌登录
在下面的示例中,我们将使用 Express.js 和 Passport.js 库来实现 OAuth2 认证,并获取谷歌用户的信息。
准备工作
在开始之前,需要先申请 Google API 的 OAuth2 客户端 ID 和密钥。按照以下步骤进行:
- 登录到 Google API 控制台。
- 选择您的项目,然后在左侧菜单中选择“凭据”。
- 单击“创建凭据”按钮,然后选择“OAuth 客户端 ID”。
- 选择“Web 应用程序”类型,然后输入应用程序名称和重定向 URI。
- 单击“创建”按钮,然后获取客户端 ID 和密钥。
将客户端 ID 和密钥复制并保存在应用程序的环境变量中,以供后续使用。
安装依赖
在开始之前,请确保已安装 Node.js 和 npm。然后在终端中创建一个新的 Express.js 项目,并安装以下依赖项:
--- ------- ------- -------- ---------------------- --------------- ------
配置 Passport 和 Express.js
在 app.js 文件中添加以下代码:
----- ------- - ------------------- ----- ------- - --------------------------- ----- -------- - -------------------- ----- -------------- - ------------------------------------------- ----- --- - ---------- ----- ---- - ---------------- -- ----- -------- --------- ------- --------- ------- ----- ------------------ ---- -- -- ------------------------------- ---------------------------- ----------------------------- ----- -- ---------- ------- ------------------------------- ----- -- ---------- -------
这将设置一个带有 express-session 和 passport 中间件的 Express.js 应用程序。我们还将使用 Passport 的 GoogleStrategy 模块来实现与谷歌的 OAuth2 认证。
在上面的示例代码中,我们设置了一个简单的序列化和反序列化用户对象的函数,以将用户信息保存在 Express.js 的会话(session)中。
实现 OAuth2 认证
在 app.js 文件中添加以下代码:
------------- --- --------------- - --------- ---------------------- ------------- -------------------------- ------------ --------------------------------------------- ------------------ ---- -- --------- ------------ ------------- -------- ----- -- - ------ ---------- --------- - - -- ------------ ----- ---- -- - ----- ---- - --- ------------------------ -- ---- ------------ --------------------- - ---------------- -- -- ----------------------- --------- - --------------- - -- -------- --------------- ------------------------------- - ------ ---------------------------------------------------- ------------------------------------------------- -- -- -------- ------------------------ ------------------------------- - ---------------- ---- ---------------- --- -- -- ---------------- -- -- ------------------- ------- -- ----------------------------
在上面的代码中,我们首先设置了一个 GoogleStrategy 实例,该实例使用 OAuth2 客户端 ID 和密钥来初始化。Passport 中的 authenticate()方法处理响应并向用户提供 Google 登录页面。
在回调URL中,我们使用 passport.authenticate()方法来完成用户认证。在成功后,我们将用户重定向到首页,并在会话中保存用户数据。如果用户不同意认证,他们将被重定向回首页。
请注意,我们获取了用户的 displayName、email 和 profile 图像等信息,这些信息可以用于在应用程序中显示用户个性化信息。还可以获取其他的 scope(请求范围)来获取更多的用户信息。
总结
在本文中,我们介绍了如何使用 Express.js 和 Passport.js 库来实现与谷歌的 OAuth2 认证,并获取谷歌用户的信息。通过使用这种方法,你的应用程序可以直接使用谷歌的用户身份验证,而不必再针对每个用户进行身份验证。这大大提高了应用程序的安全性和用户体验。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64b321c548841e9894f60575