我目前正在尝试实现使用 google 登录作为选项,以便用户更轻松地登录和创建用户。
我有一个使用 devise 进行登录的 Rails API,以及一个使用 React 向 Rails 5 API 发出请求的前端。
我不确定我是否必须在后端或前端完成所有这些登录,我最大的问题是在使用谷歌登录时创建一个用户,因为我无法创建没有密码的用户。
我从未创建过这种登录系统,所以我不确定如何工作,我相信我必须使用 google oauth gem 在后端实现所有功能,但我想知道是否有人有如何做到这一点的提示。
我应该只使用 react 组件吗?只有 Rails gem 吗?或者两者都是正确答案?
谢谢。
最佳答案
我可以给你指导。
首先,您必须弄清楚要在 OAuth 提供程序中使用哪种授权流程。
有四种方法可以实现,我只列出最常见的两种方法。
代码授予流程(用于网站、omniauth-google 或使用这种方式的类似 gem)
隐式授权流程( native 应用程序,这意味着您必须在前端执行 OAuth 流程)
如果你要实现API服务器,你应该考虑第二种方式。
由于API服务器应该是无状态的,第一种方式需要 session 来保存OAuth流程的状态。
此外,devise
并不是实现 API 服务器的好主意,您应该考虑 jwt
或基于 token 的身份验证。
不过,您可以在 Rails API 中启用 session 存储以使用 devise
或 omniauth-series
。
如果您想在前端完成所有 OAuth,请使用第二种方式。
或者您可以简单地将按钮链接添加到您的 React 组件中的 OAuth 回调 URL,然后您的 Web 服务器将处理您的 OAuth 流程(这是第一种方式)。
考虑到您的情况,我建议您采用第一种方式。
因为你可以在互联网上找到很多devise
和omniauth-series
的资源。
关于ruby-on-rails - 使用 Ruby on Rails API 和 React 通过 Google 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45682017/