ruby-on-rails - 使用 Ruby on Rails API 和 React 通过 Google 登录

标签 ruby-on-rails reactjs devise google-api

我目前正在尝试实现使用 google 登录作为选项,以便用户更轻松地登录和创建用户。

我有一个使用 devise 进行登录的 Rails API,以及一个使用 React 向 Rails 5 API 发出请求的前端。

我不确定我是否必须在后端或前端完成所有这些登录,我最大的问题是在使用谷歌登录时创建一个用户,因为我无法创建没有密码的用户。

我从未创建过这种登录系统,所以我不确定如何工作,我相信我必须使用 google oauth gem 在后端实现所有功能,但我想知道是否有人有如何做到这一点的提示。

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

谢谢。

最佳答案

我可以给你指导。

首先,您必须弄清楚要在 OAuth 提供程序中使用哪种授权流程。

有四种方法可以实现,我只列出最常见的两种方法。

  1. 代码授予流程(用于网站、omniauth-google 或使用这种方式的类似 gem)

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

如果你要实现API服务器,你应该考虑第二种方式。

由于API服务器应该是无状态的,第一种方式需要 session 来保存OAuth流程的状态。

此外,devise 并不是实现 API 服务器的好主意,您应该考虑 jwt 或基于 token 的身份验证。

不过,您可以在 Rails API 中启用 session 存储以使用 deviseomniauth-series

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

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

考虑到您的情况,我建议您采用第一种方式。

因为你可以在互联网上找到很多deviseomniauth-series的资源。

关于ruby-on-rails - 使用 Ruby on Rails API 和 React 通过 Google 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45682017/

相关文章:

jquery - 使用 Kaminari gem 进行 Ajax 分页

ruby-on-rails - Rails - .gitignore 没有 "Mate"命令 - 使用 InstantRails?

javascript - React - 突出显示给定 Xpath 的angerlySetHTML 内的文本

ruby-on-rails - 改变 Devise 的强参数

ruby-on-rails - 设计在 authenticate_user 时松开 i18n.locale!开始

javascript - Angular 获取请求

ruby-on-rails - 谷歌云 ruby​​ 部署和 ruby​​-docker

javascript - 如何使用 React-Native 中的 Navigator 组件复制 NavigatorIOS 组件行为?

javascript - ReactJs - 处理状态/属性的正确方法

ruby-on-rails - CanCan-如何允许用户仅更新和删除自己的对象