2013-03-26 17 views
0

我正在尝试在我的Rails应用程序中使用Yelp API,但在这样做时遇到了问题。我正在按照这里的文档(https://github.com/Yelp/yelp-api/blob/master/v2/ruby/example.rb),但不断收到错误。下面是我使用的控制器代码:如何解决与yelp API的omniauth错误?

require 'rubygems' 
    require 'oauth' 

    consumer_key = 'private' 
    consumer_secret = 'private' 
    token = 'private' 
    token_secret = 'private-private' 

    api_host = 'api.yelp.com' 
    @places = Place.all 
    consumer = OAuth::Consumer.new(consumer_key, consumer_secret, {:site => "http://#{api_host}"}) 
    access_token = OAuth::AccessToken.new(consumer, token, token_secret) 
    path = "/v2/search?term=restaurants&location=new%20york" 
    p access_token.get(path).body 

我不断收到的错误是:

cannot load such file -- oauth 

我有宝石“omniauth”在我的Gemfile并运行安装包(以及作为重新启动服务器),但仍然得到这个错误...有关如何排除故障的任何想法?

的Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.12' 
gem 'dynamic_form', '1.1.4' 
gem 'sqlite3' 
gem 'devise', '2.1.0rc' 
gem 'bootstrap-sass', '2.1' 
gem 'omniauth' 
gem 'httparty' 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

group :test, :development do 
    gem 'rspec-rails', '~> 2.11' 
end 

group :test do 
    gem 'capybara', '1.1.2' 
end 

回答

0

根据omniauth documentation,你应该要求 'omniauth',而不是 'OAuth的'

+0

当我这样做时,我收到一个错误,说未初始化的常量PlacesController :: OAuth。 Yelp API似乎已过时(2岁),仍然说OAuth而不是Omniauth。我将如何解决这个问题? – sharataka 2013-03-26 13:32:15

+0

没错,因为你正在看的指南是针对不同API的API(这里的API是指'一组gem类和方法等',而不是yelp API - yelp API不关心你是什么宝石使用,他们的例子是旧的)。你需要阅读上面链接到的omniauth文档,了解如何使用omniauth gem进行API调用,这超出了这个问题的范围,并且已经[在其他地方]得到了答案(http://stackoverflow.com/questions/5675029 /如何使用的,omniauth对做认证的通话到服务)。 – omnikron 2013-03-26 13:40:31

+0

这是Yelp API的omniauth策略,它需要一些更多的测试,浏览源代码,这可能会帮助你。 https://github.com/dhaneshnm/omniauth-yelp/。 – quixote 2013-12-02 15:16:20

-1

您应该运行:

sudo gem install oauth 

还是在增加GEM oauth Gemfile。