Faraday-Timeout-Fehler bei Omniauth (benutzerdefinierte Strategie) / Türhüter

Ich verfolge derzeit mitRailscast und für meine spezifische Situation stoße ich beim Rückruf von Omniauth auf einen Faraday-Timeout-Fehler.

Derzeit verwende ich eine Rails-Anwendung als API und ein Backbone als Javascript-Front-End (auf derselben Anwendung).

Ich beschloss, die API mit OAuth zu sperren, und stellte Omniauth eine benutzerdefinierte Strategie für den Zugriff auf die API als Client sowie Doorkeeper für die Verwaltung der Autorisierungslogik zur Verfügung

 module OmniAuth
      module Strategies
        class Twiddle < OmniAuth::Strategies::OAuth2
          option :name, :twiddle

          option :client_options, {
            site: "http://localhost:3001",
            authorize_path: "/oauth/authorize"
          }

          uid do
            raw_info["id"]
          end

          info do
            { 
              firstName: raw_info["firstName"],
              lastName: raw_info["lastName"], 
              email: raw_info["email"]
            }
          end

          def raw_info
            @raw_info ||= access_token.get('/api/v1/user').parsed
          end
        end
      end
    end

Ich habe die benutzerdefinierte Strategie wie folgt aufgenommen:

require File.expand_path('lib/omniauth/strategies/twiddle', Rails.root)

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twiddle, id, secret # Omitting the actual ones for obvious reasons
end

Ich verwende derzeit diese Edelsteine ​​in meinem Bundle

# OAuth 
gem 'oauth2'
gem 'omniauth'
gem 'omniauth-oauth2'
gem 'omniauth-facebook'
gem 'doorkeeper'

Hier authentifiziere ich mich und versuche, das richtige Zugriffstoken abzurufen (und auch, wo ich nicht weiterkomme)

 def loginParse
    if ( user = User.authenticate( params[:email], params[:password] ) ) 
      session[:user_id] = user.id
      redirect_to '/auth/twiddle/' 
    else 
      render :controller => "authentication", :action => "loginIndex", :notice => "Incorrect credentials" 
    end
  end

Hier ist das Routing aus der routes.rb

  # Oauth urls
  match '/auth/twiddle/callback', to: "authentication#connectAPI"
  match "/auth/facebook/callback", to: "authentication#loginSocialMedia"

Die Anwendung kann die connectAPI-Aktion niemals rendern und bleibt an diesem Punkt VOLLSTÄNDIG hängen (angegeben durch die Serverprotokolle).

  User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
  Doorkeeper::Application Load (0.2ms)  SELECT `oauth_applications`.* FROM `oauth_applications` WHERE `oauth_applications`.`uid` = '' LIMIT 1
  CACHE (0.0ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
  Doorkeeper::AccessToken Load (0.3ms)  SELECT `oauth_access_tokens`.* FROM `oauth_access_tokens` WHERE `oauth_access_tokens`.`revoked_at` IS NULL AND `oauth_access_tokens`.`application_id` = 1 AND `oauth_access_tokens`.`resource_owner_id` = 1 ORDER BY created_at desc LIMIT 1
   (0.1ms)  BEGIN
  Doorkeeper::AccessGrant Load (0.2ms)  SELECT `oauth_access_grants`.* FROM `oauth_access_grants` WHERE `oauth_access_grants`.`token` = '' LIMIT 1
  SQL (1.1ms)  INSERT INTO `oauth_access_grants` (`application_id`, `created_at`, `expires_in`, `redirect_uri`, `resource_owner_id`, `revoked_at`, `scopes`, `token`) VALUES (1, '2012-08-08 03:10:31', 600, 'http://localhost:3001/auth/twiddle/callback', 1, NULL, '', '')
   (1.4ms)  COMMIT
Redirected to http://localhost:3001/auth/twiddle/callback?code=a
Completed 302 Found in 12ms (ActiveRecord: 3.7ms)
(twiddle) Callback phase initiated.

Viele der uids / wichtigen Informationen wurden aus dem Protokoll entfernt.

Schließlich ist dieser Fehler gegeben:

Faraday :: Error :: TimeoutError (Timeout :: Error):

Ich hoffe, dass ich dieses Problem gründlich erklärt habe.

Ich weiß nicht, warum genau die Anwendung beim Callback-initiierten Teil von Omniauth einfriert. Ich habe versucht, Bundler zu aktualisieren, da mich einige andere Fragen zum Stackoverflow darauf hingewiesen haben, aber es funktioniert nicht.

Vielleicht ist mein Verständnis von OAuth2 etwas trüb.

Wenn mir jemand helfen kann, würde ich es sehr schätzen

Antworten auf die Frage(1)

Ihre Antwort auf die Frage