3

目前使用 Google 凭据授权 Rails 应用程序用户的最佳方式是什么?

在过去一年左右的时间里,谷歌对其服务进行了一些重大更改。同时,据我所知,关于 Omniauth 和 Google 的信息相当稀少。所以我想知道人们认为目前最好的方法是什么。

我正在使用设计 + Omniauth。我希望用户能够使用他们的 Google 凭据登录(我已经了解如何为其他提供商执行此操作)。但我还需要一个 oauth 令牌,使用户能够与他们的 Google+ 流和其他服务进行交互(我知道 API 目前是只读的,但我正在为未来做计划)。

所以我的具体问题是:

1) 我看到了使用 open-id 或 omniauth-google-oauth2 gem 的参考。这两种方法之间是否有任何显着差异,现在认为什么是“正确”的方法?

2) 谷歌生态系统有多“围墙”?例如,让用户在我的应用程序中与他们的 G+ 流他们的 Picassa 相册他们的 YouTube 视频等进行交互是否相对简单?还是这些完全独立的生态系统?我之所以这样问,是因为我看到的信息似乎表明,在初始化omniauth for google 时,必须将特定服务定义为一个范围。但目前尚不清楚用户通过身份验证后服务的集成度如何。

感谢您提供任何有助于我掌握 Google 的提示或建议!

4

1 回答 1

3

open-id gem只是一种使用 gmail 帐户进行身份验证的快速而肮脏的方法。而对于 Twitter,你必须注册一个应用程序,设置一些回调 url,获取你的密钥和秘密......有了这个 gem,你所需要的就是:

# Gemfile
gem 'omniauth-openid'

# Using pure omniauth
# omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :openid, :store => OpenID::Store::Filesystem.new('/tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end

# Using devise
# devise.rb
Devise.setup do |config|
  config.omniauth :open_id, :store => OpenID::Store::Filesystem.new('/tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end

你甚至不需要钥匙和秘密!这种易用性的缺点是,由于您不注册应用程序,因此无法自定义身份验证提示,例如选择应用程序的名称、描述和徽标。你得到的只是一个(相当丑陋的)提示。看看这个网站,例如,看看我的意思。或者检查 StackOverflow,他们也使用它。

但更重要的是,您只能访问用户的电子邮件地址和关联名称。

所以,我很确定omniauth-google-oauth2是适合您的方式。您需要在Google 的 Cloud Console中注册您的应用,并在那里获取您的 API 密钥和密钥。

我同意你的观点,关于 Google Oauth 的文档很少(或者我们可能搜索得不够努力)。如果你写了一篇关于如何访问你谈到的所有信息(G+ 流、youtube 视频,..)的教程,当你让它工作时,我当然会读它啊!

于 2012-05-05T15:08:42.703 回答