0

我收到此错误我不明白为什么我的 gem 文件中有它并且也正确包含它仍然不知道如何解决此错误

无法加载此类文件 --omniauth_oauth


[yahoos_controller]

require 'omniauth_oauth'
require 'multi_json'

module OmniAuth
  module Strategies
    # 
    # Authenticate to Yahoo via OAuth and retrieve basic
    # user information.
    #
    # Usage:
    #
    #    use OmniAuth::Strategies::Yahoo, 'consumerkey', 'consumersecret'
    #
    class YahoosController < omniAuth::strategies::OAuth
      def initialize(app, consumer_key, consumer_secret)
        super(app, :yahoo, consumer_key, consumer_secret,
          # Specifying the full url is the only way yahoo seems to work. Serious WTFery here.
          :request_token_url => 'https://api.login.yahoo.com/oauth/v2/get_request_token',
          :access_token_url => 'https://api.login.yahoo.com/oauth/v2/get_token',
          :authorize_url => "https://api.login.yahoo.com/oauth/v2/request_auth")
      end

      def auth_hash
        ui = user_info
        OmniAuth::Utils.deep_merge(super, {
          'uid' => ui['uid'],
          'user_info' => ui,
          'extra' => {'user_hash' => user_hash}
        })
      end

      def user_info
        profile = self.user_hash['profile']
        nickname = profile['nickname']
        {
          'uid' => profile['guid'],
          'nickname' => nickname,
          'name' => profile['givenName'] || nickname,
          'image' => profile['image']['imageUrl'],
          'description' => profile['message'],
          'urls' => {'Profile' => profile['profileUrl'] }
        }
      end

      def user_hash
        uid = @access_token.params['xoauth_yahoo_guid']
        @user_hash ||= MultiJson.decode(@access_token.get("http://social.yahooapis.com/v1/user/#{uid}/profile?format=json").body)
      end
    end
  end
end


[宝石文件]

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
# Use sqlite3 as the database for Active Record
gem 'mysql2','~> 0.3.20'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'

gem 'omniauth', '~> 1.2'
gem 'omniauth-auth0', '~> 1.1'
gem 'omniauth-yahoo-oauth2', '~> 1.1'
gem 'nokogiri'
gem 'multi_json', '~> 1.11', '>= 1.11.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end
4

1 回答 1

0

gemomniauth-auth0用于使用 auth0 服务进行身份验证。你似乎不想要这个。

gemomniauth_oauth用于构建通用策略 - 您也不需要它。

要通过 Yahoo 进行身份验证,您应该只需要这些 gem:

gem 'omniauth', '~> 1.2'
gem 'omniauth-yahoo-oauth2', '~> 1.1'

要设置 Yahoo,它比您使用的设置更简单。它显示在此处的文档中。关键部分是:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :yahoo_oauth2, yahoo_client_id, yahoo_secret,
    name: 'yahoo'
end

缺口

于 2016-01-16T20:39:10.557 回答