2 Stimmen

Devise & omniauth Facebook-Authentifizierung in Rails 3.1

Ich habe die dieser Leitfaden um die Devise-Facebook-Authentifizierung zum Laufen zu bringen, und ich bin jetzt an einem Punkt angelangt, an dem ich es nicht verstehe und Hilfe benötige.

Ich erhalte den Link Mit Facebook anmelden, aber wenn ich darauf klicke, erhalte ich die folgende Fehlermeldung, die mir sagt, dass etwas mit den Routen nicht stimmt

Unbekannte Aktion

Es konnte keine Gerätezuordnung für den Pfad "/users/auth/facebook" gefunden werden. Vielleicht haben Sie vergessen, Ihre Route innerhalb des scope-Blocks zu verpacken? Zum Beispiel: devise_scope :user do match "/some/route" => "some_devise_controller" end

Hier ist meine Routendatei

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
  root :to => 'home#index'

Bearbeiten:

Ich habe das Problem gelöst, indem ich die Routen in

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
root :to => 'home#index'

Jetzt habe ich den nächsten Fehler immer die Facebook-Authentifizierung zu arbeiten, aber wenn Sie zurück von der "Allow app Bildschirm" Ruby wirft ...

undefinierte Methode `closed?' für nil:NilClass

activesupport (3.1.0.rc8) lib/active_support/whiny_nil.rb:48:in method_missing' /opt/local/lib/ruby/1.8/net/http.rb:1060:in r faraday (0.6.1) lib/faraday/adapter/net_http.rb:51:in call' faraday (0.6.1) lib/faraday/request/url_encoded.rb:14:in anrufen' faraday (0.6.1) lib/faraday/request.rb:88:in run' faraday (0.6.1) lib/faraday/request.rb:28:in r faraday (0.6.1) lib/faraday/connection.rb:170:in run_request' oauth2 (0.4.1) lib/oauth2/client.rb:63:in Bitte

...

Dies ist mit Rails 3.1.0rc8 und Ruby 1.9.2

2voto

Andrei S Punkte 6382

Ich habe gerade gestern meine omniauth Login für meine App, mit genau der gleichen Anleitung und Schienen 3.1 final

Ich bin mir nicht sicher, ob Sie Ihre Routen richtig gewählt haben, meine sehen so aus:

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
  get 'sign_in', :to => 'users/sessions#new', :as => :new_user_session
  get 'sign_out', :to => 'users/sessions#destroy', :as => :destroy_user_session
end

devise_scope :user do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end

In meinem devise_for :users blockiere ich die An- und Abmeldung, weil ich OmniAuth ohne andere Authentifizierungen verwende

Der Leitfaden besagt auch, dass die get '/users/auth/:provider' Zeile sollte in einer devise_scope :user

Ich bin mir nicht sicher, ob dies Ihr Problem lösen wird, aber ich wollte zumindest diese Punkte anführen, die nicht in einen Kommentar passen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X