Ответ 1
Я столкнулся с этим pull-request из года назад, который исправил ту же проблему для omniauth-twitter. Если вы посмотрите на fix, кажется, что все, что они сделали, это изменить:
require 'omniauth-oauth'
require 'multi_json'
module OmniAuth
module Strategies
class Twitter < OmniAuth::Strategies::OAuth
option :name, 'twitter'
option :client_options, {:authorize_path => '/oauth/authenticate',
:site => 'https://api.twitter.com'}
:
require 'omniauth-oauth'
require 'multi_json'
module OmniAuth
module Strategies
class Twitter < OmniAuth::Strategies::OAuth
option :name, 'twitter'
option :client_options, {:authorize_path => '/oauth/authenticate',
:site => 'https://api.twitter.com',
:proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil}
Я предполагаю, что это устанавливает параметр значения oauth "proxy" , который будет передан через заголовок запроса. Я думаю, что если вы откажетесь от репликации omniauth-linkedin и сделаете аналогичное изменение в OmniAuth:: Strategies:: LinkedIn, оно должно пройти аутентификацию через прокси-сервер. Я предлагаю изменение по строкам:
require 'omniauth/strategies/oauth'
module OmniAuth
module Strategies
class LinkedIn < OmniAuth::Strategies::OAuth
option :name, "linkedin"
option :client_options, {
:site => 'https://api.linkedin.com',
:request_token_path => '/uas/oauth/requestToken',
:access_token_path => '/uas/oauth/accessToken',
:authorize_url => 'https://www.linkedin.com/uas/oauth/authenticate',
:proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil
}
Это должно преобразовать параметр среды в экземпляр URI, который OmniAuth может потреблять, параметризовать и правильно размещать в запросе.