我将omniauth策略实现为gem,但意识到它只是oauth的基本实现。
我在设计中配置。像这样:
config.omniauth :mystrategy, 'key', 'secret'
有没有一种更简单的方法可以在没有创建gem的情况下在设计中执行此操作,我可以在一个conifg块中配置它,如
config.omniauth :mystrategy do |strategy|
strategy.key ='blah'
strategy.authorize_path = 'blah'
end
你能给我一个例子或指出我正确的方向吗?我在网上看到的一切都是将它打造成战略宝石。
答案 0 :(得分:0)
听起来你已经从零开始编写了一个oauth策略并将其打包为宝石。如果它只是你完全实现的oauth或oauth2策略,我认为你不需要这样做,或者创建一个gem。但是,我不确定是否有任何方法只在配置块中执行此操作。您应该只需使用https://github.com/intridea/omniauth-oauth或https://github.com/intridea/omniauth-oauth2并使用README中描述的几种方法创建子类即可。
我自己没有这样做,但这是其他omniauth策略采取的方法。例如,omniauth-twitter基于omniauth-oauth策略,正如您可以通过其超类看到的那样:
https://github.com/arunagw/omniauth-twitter/blob/master/lib/omniauth/strategies/twitter.rb
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