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。 - 确保您提供了域名和重定向网址。这样 Google 才能识别可以提供身份验证的原始域名。
您还可以添加本地路由进行开发。现在,Google 开发者控制台中的身份验证设置已完成。
让我们编码
让我们从代码开始。查看我的代码库,获取所有代码片段。查看演示。
在您的 CRA 安装react-google-login
包中
npm i react-google-login
创建一个Login
充当登录按钮的组件。
同样,创建一个Logout
组件
并将两者添加到应用程序所需的位置。我的是App.js
profileObj
现在运行您的应用程序将在登录后显示在控制台中。
恭喜🎉您成功了😃。
但是 1 小时后,您的 idtokenId
就会过期,因此将无法用于访问数据或验证用户身份。因此,我们需要生成新的 id tokenId
。为了使其正常工作,我们需要在Login
组件中添加一些额外的用例。
refreshTokenSetup
函数将负责处理新的tokenIds
该函数检查expires_in
时间戳或我们的自定义时间(在令牌过期之前)并调用reloadAuthResponse
库提供的实用函数,它处理refresh_token
并获取新的tokenId
。
耶😃 Google 登录已成功添加到您的应用程序🎉。现在您可以访问用户的姓名、照片 URL、电子邮件、Google ID等信息了。
额外的
上述方法使用了 Google 登录默认按钮。您也可以使用render
prop 使用自定义按钮。
我们还可以使用React Hooks实现相同的功能。❤️
LoginHooks.js
LogoutHooks.js
服务器端验证
如果您希望添加服务器端验证,请在调用的组件中将tokenId
客户端发送到服务器一次。onSuccess
Login
因此,在处理经过身份验证的路由时,来自客户端的所有请求都需要tokenId
在标头中发送用户的Bearer 令牌。服务器收到令牌后,必须进行以下验证:tokenId
- 属于当前应用程序。
- 是否已过期
您可以手动完成这些操作,但 Google 建议使用他们的身份验证库(只需付出最少的努力)。
在服务器端(这里使用 Node.js)。
安装 Google 官方支持的库google-auth-library
包,用于对 OAuth 应用进行身份验证和验证。
在这里,它会验证我们GOOGLE_CLIENT_ID
发送的令牌是否属于我们的应用程序。它会解析令牌并在getPayload
函数中提供配置文件详细信息。您可以使用它们来访问用户数据。
如有任何疑问,请随时通过下面的社交媒体帐户发表评论或与我个人聊天。
我喜欢与开发人员保持联系。😃
文章来源:https://dev.to/sivaneshs/add-google-login-to-your-react-apps-in-10-mins-4del