Rails3 - oauth-plugin问题

时间:2011-02-07 19:46:32

标签: ruby-on-rails ruby oauth

我正在尝试在我正在开发的Rails应用程序上使用oauth-plugin,但我一直遇到问题。

为了确保我没有犯任何错误,我从头开始使用应用程序(使用Rails 3.0.3)。以下是我遵循的步骤:

  1. 创建新的rails应用程序(rails.test
  2. 编辑其Gemfile以包含:

    gem "oauth-plugin", ">=0.4.0.pre1"
    gem "oauth", "0.4.4"
    
  3. 通过运行oauth-consumer

  4. 生成script/rails g oauth_consumer
  5. 编辑oauth_consumers.rb以包含我的Google集成密钥:

    :google=>{ 
      :key=>"anonymous", 
      :secret=>"anonymous",
      :scope=>"https://www.google.com/calendar/feeds/", 
      :options => {
        :site => "http://www.google.com", 
        :request_token_path => "/accounts/OAuthGetRequestToken", 
        :access_token_path => "/accounts/OAuthGetAccessToken", 
        :authorize_path=> "/accounts/OAuthAuthorizeToken"
      },
    }
    
  6. 编辑routes.rb以添加oauth_consumer的路由:

    resources :oauth_consumers
    
  7. 编辑application_controller.rb以实施logged_in?方法,如下所示:

    def logged_in?
        true
    end
    
  8. 现在,当我访问http://localhost:3000/oauth_consumers/google时,我收到以下错误:

    uninitialized constant GoogleToken
    
  9. 有谁知道导致此错误的原因以及如何解决? GoogleToken是一个应该由oauth-plugin自动生成的类,所以我不知道为什么我会得到这个未初始化的常量错误。

3 个答案:

答案 0 :(得分:3)

除非您将“google”传递给生成器,否则GoogleToken类不会自动生成:

script/rails g oauth_consumer google

或者对于rails 3:

rails g oauth_consumer google

同时检查以确保在用户模型中设置关系,如下所示:

has_one  :google, :class_name => "GoogleToken", :dependent => :destroy

答案 1 :(得分:0)

您是否记得在编辑bundle install后从终端运行Gemfile?听起来你的Rails应用程序还不知道这些宝石。

答案 2 :(得分:0)

我有同样的问题,我认为解决方案可能是这样的: https://github.com/pelle/oauth-plugin/blob/master/lib/generators/oauth_consumer/USAGE 您需要某种身份验证,例如restful-authentication插件,如果您在oauth_consumers_controller.rb文件中取消注释第27..29行,您将跳转到下一步!