目前使用Google凭据授权Rails应用用户的最佳方式是什么?
谷歌在过去一年左右的时间里对他们的服务进行了一些重大改变。同时,从我所看到的,有关Omniauth和Google的信息相当稀少。所以我想知道人们认为目前最好的方法是什么。我正在使用Devise + Omniauth。我希望用户能够使用他们的Google凭据登录(我已经了解如何为其他提供商执行此操作)。但我还需要一个oauth令牌,使用户能够与他们的Google+信息流和其他服务进行互动(我知道API目前只读,但我正在计划未来)。
所以我的具体问题是:
1)我见过使用open-id或omniauth-google-oauth2 gem的参考资料。这两种方法之间是否有任何显着差异,现在被认为是“正确”的方法?
2)Google生态系统是如何“围墙”的?例如,让用户在我的应用程序中与他们的G +流和他们的Picassa专辑和他们的YouTube视频等进行交互是否相对简单?或者这些是完全独立的生态系统?我问这个是因为我看到的信息似乎表明,当初始化谷歌的omniauth时,必须将特定服务定义为范围。但目前还不清楚用户经过身份验证后服务的集成程度。
感谢您提供有助于我掌握Google的任何提示或建议!
答案 0 :(得分:3)
open-id gem只是使用Gmail帐户进行身份验证的快捷方式。对于Twitter,你必须注册一个应用程序,设置一些回调网址,获取你的密钥和秘密......有了这个宝石,你只需要这个:
# 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
你甚至不需要钥匙和秘密!这种易用性的缺点是,由于您没有注册应用程序,因此无法自定义身份验证提示,例如选择应用程序的名称,描述和徽标。你得到的只是一个(相当丑陋)的提示。例如,查看this website,看看我的意思。或者检查StackOverflow,他们也使用它。
但更重要的是,您只能访问用户的电子邮件地址和相关名称。
所以,我很确定omniauth-google-oauth2是你的选择。您需要在Google's Cloud Console注册您的应用,并在那里获取您的API密钥和密码。
我同意你的观点,关于Google Oauth的文档很少(或者我们没有足够的搜索)。如果你写了一个关于如何访问你所谈论的所有信息的教程(G +流,youtube视频,......),当你让它工作时,我当然会读它呃!