0

我已经让我的应用程序与 Authlogic 一起工作(即 sign_in 和 sign_up),我现在正尝试通过 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​​ 很陌生,所以我不太明白这个命名空间冲突来自哪里或如何解决它。任何帮助将不胜感激。

4

2 回答 2

2

好的,我想通了。问题是 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-17T00:01:26.923 回答
1

尝试更改OAuth::OAuth. 冒号表示您想OAuth从班级外部访问。它是从你的班级搜索的。

于 2011-03-16T23:22:37.413 回答