Индивидуальная стратегия для Omniauth - PullRequest
0 голосов
/ 30 мая 2019

Мне нужно реализовать собственную стратегию для приложения в rails, версия программного обеспечения: Rails 5.0.7.2 ruby ​​2.3.2p217 (2016-11-15 ревизия 56796) [x86_64-linux] Bundler версия 1.16.6

Это файлы, которые я добавил:

# config/initializers/omniauth.rb
module OmniAuth
  module Strategies
    # tell OmniAuth to load our strategy
    autoload :Platform, 'lib/strategies/platform.rb'
  end
end

Rails.application.config.middleware.use OmniAuth::Builder do
  # pass the 2 parameters to the constructor
  provider :platform, "Client Id", "Client Secret",
      client_options: {
        site: "https://my.auth.provider",
        user_info_url: "/connect/userinfo"
      }

end

Теперь, в моем каталоге lib / стратегия / я создал файл моей стратегии:

# lib/strategies/platform.rb
require 'omniauth-oauth2'

module OmniAuth
  module Strategies
    class Platform < OmniAuth::Strategies::OAuth2
      option :name, :platform

      option :client_options, {
        :site => "https://my.auth.provider",
        :authorize_url => "/connect/authorize",
        :user_info_url => "/connect/userinfo"
      }

      uid { raw_info["id"] }

      info do
        {
          :email => raw_info["email"]
          # and anything else you want to return to your API consumers
        }
      end

      def raw_info
        @raw_info ||= access_token.get('/connect/userinfo/me.json').parsed
      end

      def callback_url
        full_host + script_name + callback_path
      end
    end
  end
end

И я зарегистрировал обратный вызовURL в config / rout.rb:

#OAuth2 Generic
get "/auth/:provider/callback" => "sessions#create"

Теперь, это приложение, которое я пытаюсь настроить, уже разработало и включило всевозможные функции для Google, Twitter и Facebook, но по какой-то причине мой URL никогда не работаетзарегистрироваться.Что мне не хватает?что я должен делать?Я хочу иметь

user_platform_omniauth_authorize_path and
user_platform_omniauth_callback_path

Registered routes for my app

...