我已经让我的应用程序(即sign_in和sign_up)与Authlogic一起工作,现在我正试图通过Authlogic_OAuth gem添加对OAuth的支持。我已经得到了所有的基本设置(我认为),我已经添加了一个“登录Twitter”按钮到我的登录页面。问题是,当我单击按钮时,我得到了这个错误:
uninitialized constant UserSession::OAuth使用应用程序跟踪:
app/models/user_session.rb:17:in `oauth_consumer'
app/controllers/user_sessions_controller.rb:23:in `create'失败的函数在我的user_session模型中:
# authlogic_oauth hacks
# Twitter example
def self.oauth_consumer
OAuth::Consumer.new("TOKEN", "SECRET",
{ :site => "http://twitter.com",
:authorize_url => "http://twitter.com/oauth/authenticate"})
end我是rails和ruby的新手,所以我不太明白这个名称空间冲突是从哪里来的,或者如何解决它。任何帮助都将不胜感激。
发布于 2011-03-17 08:01:27
好了,我想通了。问题是OAuth::Consumer没有用authlogic_oauth定义。它实际上是在oauth gem中定义的。所以我将我的Gemfile更新为:
gem 'authlogic', '2.1.6'
# set up oauth capabilities. Note: :lib is replaced with :require in rails 3
gem 'authlogic-oauth', '1.0.8', :require => 'authlogic_oauth'
gem 'oauth', '0.4.4'然后运行:
bundle install而且,不要忘记重新启动rails服务器,以便它重新加载Gemfile中的gem。
发布于 2011-03-17 07:22:37
尝试将OAuth更改为::OAuth。冒号表示您希望从类外部访问OAuth。它是从你的班上搜索的。
https://stackoverflow.com/questions/5332736
复制相似问题