10 分钟内将 Google 登录添加到你的 React 应用

2025-05-26

10 分钟内将 Google 登录添加到你的 React 应用

替代文本

作为客户端开发者,创建带有身份验证的应用可能是一个繁琐的过程。因为我们需要在服务器端处理身份验证并维护代码。根据不同的身份验证机制(例如 Basic、OAuth 等),确实存在一些需要维护的情况。本博客将帮助您为 React 应用创建一个独立的后端,无需身份验证。(或者,您也可以添加服务器配置来使用服务器进行身份验证。)

为什么使用 OAuth?

使用 OAuth 的原因有很多。

  • 它是安全的。
  • 它不需要用户提供任何凭证。因此无需记住多个密码。
  • 网站还可以获取有关用户的基本信息,而无需花费太多时间填写表格。

具体来说,在我们的例子中,我们不需要服务器进行身份验证或获取用户的初始详细信息。😉

我找到了一个名为 的包react-google-login。它提供了添加 Google 登录的简单机制。您可以直接使用其GoogleLogin组件,也可以使用自定义按钮。它们还提供自定义钩子,例如useGoogleLogin和 ,useGoogleLogout因此钩子爱好者可以轻松使用。(两种方法如下所述)

他们为这个存储库提供的文档非常棒。但它在某些方面有所缺失,而这篇博客对此进行了解决。就像详细说明一样,这篇博客可以帮助您在 Google 开发者控制台中创建应用程序并访问clientId。此软件包获得的初始版本access_token仅持续一小时(出于安全原因)。我们需要迭代该过程才能使用 访问新的access_token版本refresh_token。这样您就可以创建一个可用于生产的应用程序。

步骤

  • 我们需要在 Google 开发者控制台中创建一个应用程序。它提供clientId用于识别您的应用程序的身份验证详细信息。请按照以下步骤获取客户端 ID。
    1. 转到 “凭据”页面(如果您是新手,请创建一个项目并按照以下步骤操作)
    2. 单击 创建凭据 > OAuth 客户端 ID
    3. 选择 Web 应用程序 类型。
    4. 命名您的 OAuth 2.0 客户端并单击 “创建”
  • 确保您提供了域名和重定向网址。这样 Google 才能识别可以提供身份验证的原始域名。替代文本

您还可以添加本地路由进行开发。现在,Google 开发者控制台中的身份验证设置已完成。

让我们编码

替代文本

让我们从代码开始。查看我的代码库,获取所有代码片段。查看演示

在您的 CRA 安装react-google-login包中



npm i react-google-login


Enter fullscreen mode Exit fullscreen mode

创建一个Login充当登录按钮的组件。

替代文本

同样,创建一个Logout组件

替代文本

并将两者添加到应用程序所需的位置。我的是App.js

替代文本

profileObj现在运行您的应用程序将在登录后显示在控制台中。

恭喜🎉您成功了😃。

但是 1 小时后,您的 idtokenId就会过期,因此将无法用于访问数据或验证用户身份。因此,我们需要生成新的 id tokenId。为了使其正常工作,我们需要在Login组件中添加一些额外的用例。

替代文本

refreshTokenSetup函数将负责处理新的tokenIds

替代文本

该函数检查expires_in时间戳或我们的自定义时间(在令牌过期之前)并调用reloadAuthResponse库提供的实用函数,它处理refresh_token并获取新的tokenId

耶😃 Google 登录已成功添加到您的应用程序🎉。现在您可以访问用户的姓名、照片 URL、电子邮件、Google ID等信息了。

额外的

上述方法使用了 Google 登录默认按钮。您也可以使用renderprop 使用自定义按钮。

替代文本

我们还可以使用React Hooks实现相同的功能。❤️

LoginHooks.js

替代文本

LogoutHooks.js

替代文本

服务器端验证

如果您希望添加服务器端验证,请在调用的组件中将tokenId客户端发送到服务器一次onSuccessLogin

因此,在处理经过身份验证的路由时,来自客户端的所有请求都需要tokenId在标头中发送用户的Bearer 令牌。服务器收到令牌后,必须进行以下验证:tokenId

  • 属于当前应用程序。
  • 是否已过期

您可以手动完成这些操作,但 Google 建议使用他们的身份验证库(只需付出最少的努力)

在服务器端(这里使用 Node.js)。

安装 Google 官方支持的库google-auth-library包,用于对 OAuth 应用进行身份验证和验证。

替代文本

在这里,它会验证我们GOOGLE_CLIENT_ID发送的令牌是否属于我们的应用程序。它会解析令牌并在getPayload函数中提供配置文件详细信息。您可以使用它们来访问用户数据。

如有任何疑问,请随时通过下面的社交媒体帐户发表评论或与我个人聊天。

我喜欢与开发人员保持联系。😃

Twitter | LinkedIn | GitHub

文章来源:https://dev.to/sivaneshs/add-google-login-to-your-react-apps-in-10-mins-4del
PREV
每个 JS 开发人员都应该知道的异步编程基础知识
NEXT
使用纯 HTML5、CSS3 和 JavaScript 构建 Slack UI:CSS 网格和 flexbox 的强大功能 slack-clone-ui