【问题标题】:Google/Facebook OAuth2 in Rails Front-end app with rails-api as webserviceRails 前端应用程序中的 Google/Facebook OAuth2 使用 rails-api 作为 web 服务
【发布时间】:2015-07-03 07:08:34
【问题描述】:

我的前端 Rails 应用程序也使用 AngularJs,我也有一个用 Rails 编写的 api 后端(使用 rails-api gem)。我已经为这个系统实现了登录系统。现在我想实现login with facebook/google。我已经通过互联网搜索,到目前为止我找到了this 博客。从这篇博客中,我得到了在 Android 中使用 Rails 作为后端实现google OAuth 2 的想法。但就我而言,我想在我的前端应用程序(Rails + Angular)中实现google OAuth 2,并使用 Rails 作为后端。

为了实现google OAuth 2,前端应用需要请求tokengoogle oauth2 authorization server,我不知道该怎么做。

另外,使用 rails 来请求令牌是否很好,或者我可以使用 Angular 来处理该部分。为此目的,最佳做法是什么?

【问题讨论】:

  • 尝试在前端使用hello.js,然后在后端验证令牌。
  • 好的,我会看看的。谢谢顺便说一句

标签: ruby-on-rails angularjs facebook-oauth rails-api google-oauth


【解决方案1】:

首先,您需要在front-end 中实现google 登录Here 是关于在 javascript 中实现 google 登录的 google 文档。 google 将为您提供有关用户个人资料的信息。获得信息后,您可以将其发送给您的服务。在服务器端/后端,您可以使用此信息做任何事情。那是你的。

此外,this 文档可能对您的案例有所帮助。

【讨论】:

  • 谢谢@Madan,你拯救了我的一天。
【解决方案2】:

你可以使用omniauth-google-oauth2 gem

主要思想是将其实现为Devise

很好的解决方案你可以找到this

有了这个解决方案,如果你使用前端/后端是没有问题的。 所以,你应该注意接下来的步骤:

用户模型:

devise :database_authenticatable, ... , :omniauthable

设计.rb:

config.omniauth :google_oauth2, ENV['GP_key'], ENV['GP_secret'],
    {
                  name: 'google',
                  scope: 'plus.login, userinfo.email, userinfo.profile,
                          ...
                          youtubepartner, youtubepartner-channel-audit',
                  prompt: "select_account"
    }

解决方案中的后续步骤..

在我的项目中,它也适用于前端/后端。 所以,如果你发现困难,我很乐意为它提供建议来解决......

更新:适用于 Android 版本的前端。 您不应该在 Google 上进行身份验证/授权前端。 您应该在后端执行此操作。 您可以使用网络工具或其他合适的方式在DeviseGoogle auth pages...

【讨论】:

  • 您能否详细说明一些工作示例。我对此更加困惑。
  • 您写道:For implementation of google OAuth 2, Front-end app need to request the token to google oauth2 authorization server and I have no idea on how to do it. --- 在我看来,这不好,因为您应该进行身份验证。后端处理。为什么?作为 RoR 中的默认设置,我们为用户提供了 Devise 身份验证。我们可以通过谷歌向omniauth 解释这个Devise 的身份验证。请阅读文章sourcey.com/…,这是一个很好的解决方案。可行。
猜你喜欢
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多