使用 React 前端的 Django Google 登录

2024-04-27

这个问题可能非常简单,但我已经搜索了一段时间,但还没有找到确切的解决方案。

我正在尝试使用 React 作为前端,使用 Django 作为后端来实现 Google Login。

我到底该怎么做呢?我见过一些解决方案,其中将令牌发送到后端,然后后端从 Google API 检索必要的信息,并根据令牌从数据库创建或检索用户。然而,这似乎是基于 JWT,我想知道是否可以使用简单的 Django Auth Token 来实现相同的功能?

也许我真的很盲目,但我真的找不到合适的解决方案。

感谢您的帮助!


在过去多次失败之后,我实际上不久前就在研究这个问题。试图找到一个适用于 React 的解决方案确实是一件令人头疼的事情。然而,我已经成功地在 React 前端轻松设置了 google 登录https://www.npmjs.com/package/react-google-login https://www.npmjs.com/package/react-google-login。这应该是您需要采取的第一步。

之后,您需要使用 django_allauth 在 Django 后端设置社交登录。基本上,这个想法是,一旦用户通过谷歌登录,或者更准确地说,点击前端的“使用谷歌登录”按钮,就会从谷歌检索谷歌 access_token 并与一些其他数据一起保存在本地存储中。这里只有 access_token 感兴趣。因此,您需要获取此 access_token 并通过您将设置的视图的 Rest API 将其发送到 Django 后端。这将获取保存在社交帐户下数据库中的谷歌用户数据,最终将它们登录到应用程序中。从那时起,一切都应该按照您使用电子邮件和用户名的正常登录继续。也就是说,如果使用 JWT,将从后端返回一个 jwt 令牌,您希望能够将其保存在本地存储中。在我的 React 应用程序中,我根据此令牌进行身份验证,因此只要本地存储中有该令牌,用户就会登录。

Pratik Singh Chauhan 在他的第 1 部分教程中很好地解释了这一点 ->https://medium.com/@pratique/social-login-with-react-and-django-i-c380fe8982e2 https://medium.com/@pratique/social-login-with-react-and-django-i-c380fe8982e2和第 2 部分在这里 ->https://medium.com/@pratique/social-login-with-react-and-django-ii-39b8aa20cd27 https://medium.com/@pratique/social-login-with-react-and-django-ii-39b8aa20cd27


UPDATE: 2022 年 6 月

由于 Google 现在正在转向 (GIS) Google Identity Services 登录 SDK,因此这种方法虽然有效,但现已弃用。

这是一个很好的链接,可以帮助您使用新的 google GIS 设置反应登录。

https://github.com/MomenSherif/react-oauth/issues/12#issuecomment-1131408898 https://github.com/MomenSherif/react-oauth/issues/12#issuecomment-1131408898

根据您的工作流程,您可以使用两种方法:隐式方法或授权方法。为了维持与上述代码实现的类似工作流程,隐式工作流程可以为您提供 access_token 和 refresh_token,并将它们发送到后端 api。

这是另一个包含两个工作流程示例代码的链接。

https://react-oauth.vercel.app/ https://react-oauth.vercel.app/

请注意,您将需要使用@react-oauth/谷歌在您的代码中配置 Google 工作流程。

参考这个:

https://reactjsexample.com/google-oauth2-using-the-new-google-identity-services-sdk-for-react/ https://reactjsexample.com/google-oauth2-using-the-new-google-identity-services-sdk-for-react/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 React 前端的 Django Google 登录 的相关文章

随机推荐