设计的通用omniauth提供者/策略

时间:2014-02-14 00:03:50

标签: ruby-on-rails ruby devise omniauth

我将omniauth策略实现为gem,但意识到它只是oauth的基本实现。

我在设计中配置。像这样:

config.omniauth :mystrategy, 'key', 'secret'

有没有一种更简单的方法可以在没有创建gem的情况下在设计中执行此操作,我可以在一个conifg块中配置它,如

    config.omniauth :mystrategy do |strategy|
          strategy.key ='blah'
          strategy.authorize_path = 'blah'
    end

你能给我一个例子或指出我正确的方向吗?我在网上看到的一切都是将它打造成战略宝石。

1 个答案:

答案 0 :(得分:0)

听起来你已经从零开始编写了一个oauth策略并将其打包为宝石。如果它只是你完全实现的oauth或oauth2策略,我认为你不需要这样做,或者创建一个gem。但是,我不确定是否有任何方法只在配置块中执行此操作。您应该只需使用https://github.com/intridea/omniauth-oauthhttps://github.com/intridea/omniauth-oauth2并使用README中描述的几种方法创建子类即可。

我自己没有这样做,但这是其他omniauth策略采取的方法。例如,omniauth-twitter基于omniauth-oauth策略,正如您可以通过其超类看到的那样:

https://github.com/arunagw/omniauth-twitter/blob/master/lib/omniauth/strategies/twitter.rb

omniauth-facebook基于omniauth-oauth2策略:

https://github.com/mkdynamic/omniauth-facebook/blob/master/lib/omniauth/strategies/facebook.rb

只需在Omniauth :: Strategies命名空间中定义您的类 - 例如Omniauth :: Strategies :: Mystrategy应该足以让你将它称为:你的omniauth配置中的mystrategy,如“创建策略”中所述:https://github.com/intridea/omniauth/wiki/Strategy-Contribution-Guide