2010-10-24 12 views
2

J'essaie de construire une nouvelle application 3 rails à partir de zéro en utilisant OmniAuth. Actuellement, je viens d'une application complètement vide, où j'ai ajouté omniauth au Gemfile, et a ajouté un omniauth.rb dans config/initializers qui ressemble à ceci:Rails 3, OmniAuth et les passagers throws RoutingError

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, 'APP_ID', 'APP_SECRET' 
end 

(Sauf avec l'identifiant d'application correcte et secret au lieu des espaces réservés bien sûr.)

Cela semble fonctionner lors de l'exécution de ma machine de développement en utilisant Webrick, mais facebook donne une erreur puisque localhost: 3000 n'est pas enregistré comme une application. Donc, je le télécharge sur le serveur de production pour tester. Ici, la requête semble contourner complètement la couche rack et aboutit à des rails qui lancent une erreur RoutingError car il n'y a pas de route appelée/auth/facebook définie dans routes.rb.

Le serveur fonctionne sous Apache 2.2, Ruby 1.8.7, Rails 3.0.1, Rack 1.2 et Passager 3.0.0. Y a-t-il quelque chose d'évident qui me manque?

BTW, l'application est installée à un sous-URL, à savoir http://www.mydomain.net/myapp

Répondre

4

Je l'ai trouvé moi-même:

Changé le code:

Rails.application.config.middleware.use OmniAuth::Builder do 
    configure do |config| 
    config.path_prefix = '/myapp/auth' if RAILS_ENV == 'production' 
    end 

    provider :facebook, 'APP_ID', 'APP_SECRET' 
end 

Maintenant, il fonctionne comme un charme.