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

私はレールとルビーにかなり慣れていないので、この名前空間の衝突がどこから来ているのか、それを解決する方法がよくわかりません。どんな助けでも大歓迎です。

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 に答える