Google/Facebook Rails 前端应用程序中的 OAuth2,使用 rails-api 作为网络服务

Google/Facebook OAuth2 in Rails Front-end app with rails-api as webservice

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

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

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

您可以使用 omniauth-google-oauth2 gem

主要思想是将其实现到 Devise

好的解决方案您可以找到 this

使用此解决方案,如果您使用 frontend/backend 是没有问题的。 所以,你应该注意接下来的步骤:

用户模型:

devise :database_authenticatable, ... , :omniauthable

Devise.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"
    }

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

在我的项目中,它也适用于 frontend/backend。 所以,如果您发现困难,我很乐意为您出谋划策...

更新: Android 版本的前端。 你不应该在 Google 上做 authentication/authorization 前端。 您应该在后端执行此操作。 您可以使用网络工具或其他合适的方式在 DeviseGoogle auth pages...

中走动

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

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