2017-08-14 113 views
1

我目前正试图实现与谷歌登录作为一个选项,使用户更容易登录和创建用户。使用Google登录,使用Ruby on Rails API和React

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

林不知道如果我必须在后端或前端做所有这些登录,我最大的问题是创建一个用户登录谷歌时,因为我不能创建一个没有密码的用户。

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

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

谢谢。

回答

1

我可以给你方向归档这个。

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

有四种方法可以做到这一点,我只列出了最常见的两种方法。

  1. 代码格兰特流量(用于网站omniauth,谷歌或类似的宝石用这种方式)

  2. 隐格兰特流量(本机应用程序,这意味着你必须做在前端的OAuth的流量)

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

因为API服务器应该是无状态的,所以第一种方式需要session来保存OAuth流的状态。

此外,devise是不是一个好主意来实现API服务器,你应该考虑jwt或类似令牌的身份验证。

虽然您可以在rails API中启用会话存储以使用deviseomniauth-series

如果您想在前端执行所有OAuth,请使用第二种方法。

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

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

因为有关于deviseomniauth-series的许多资源,您可以在互联网上找到。