Ruby on rails 使用RubyonRails API登录Google,然后进行React

Ruby on rails 使用RubyonRails API登录Google,然后进行React,ruby-on-rails,reactjs,devise,google-api,Ruby On Rails,Reactjs,Devise,Google Api,我目前正在尝试使用google实现一个登录选项,以方便用户登录和创建用户 我有一个Rails API,它使用Desive登录,还有一个前台使用React向Rails 5 API发出请求 我不确定我是要在后端还是前端登录,我最大的问题是在谷歌登录时创建一个用户,因为我无法创建一个没有密码的用户 我从来没有创建过这种登录系统,所以我不确定如何工作,我相信我必须在后端实现所有功能,使用GoogleOAuthGem,但我想知道是否有人有这样做的技巧 我应该只使用react组件吗?只有宝石吗?或者两者都是

我目前正在尝试使用google实现一个登录选项,以方便用户登录和创建用户

我有一个Rails API,它使用Desive登录,还有一个前台使用React向Rails 5 API发出请求

我不确定我是要在后端还是前端登录,我最大的问题是在谷歌登录时创建一个用户,因为我无法创建一个没有密码的用户

我从来没有创建过这种登录系统,所以我不确定如何工作,我相信我必须在后端实现所有功能,使用GoogleOAuthGem,但我想知道是否有人有这样做的技巧

我应该只使用react组件吗?只有宝石吗?或者两者都是正确答案


谢谢。

我可以告诉你这个方向

首先,您必须弄清楚您将在OAuth提供者中使用哪个授权流

有四种方法,我只列出最常见的两种方法

  • 代码授权流(用于网站、omniauth google或类似的gem,使用这种方式)

  • 隐式授权流(本机应用程序,这意味着您必须在前端执行OAuth流)

  • 如果你要实现API服务器,你应该考虑第二种方式。 因为API服务器应该是无状态的,所以第一种方法需要会话来保存OAuth流的状态

    <>代码<>代码<>代码>实现API服务器不是一个好主意,你应该考虑<代码> JWT>代码>或基于令牌的身份验证。 尽管如此,您可以在rails API中启用会话存储来使用
    designe
    omniauth系列

    如果您想在前端完成所有OAuth,请使用第二种方法

    或者,您可以简单地将按钮链接添加到react组件中的OAuth回调url,然后web服务器将处理OAuth流(这是第一种方法)

    考虑到你的情况,我建议你使用第一种方法

    因为有很多关于
    design
    omniauth系列的资源,你可以在互联网上找到