2016-04-20 18 views
2

Ich teste die neuen Schienen 5 api. Ich möchte einen OAuth2-Server von einem js-Client erstellen.Doorkeeper new_oauth_application_path nicht gefunden

Ich benutze Doorkeeper, um den oauth2 Server zu verwalten.

In meinem routes.rb ich habe

Rails.application.routes.draw do 
    use_doorkeeper 
end 

doorkeeper.rb

resource_owner_authenticator do 
    User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url) 
end 

Wenn ich auf 'http://localhost:3000/oauth/applications' gehen, ich habe den Fehler:

ActionView::Template::Error (undefined local variable or method `new_oauth_application_path' for #<#<Class:0x007fbf1f70c908>:0x007fbf1f72f8b8>) 

Ist Pförtner nicht voll funktional mit Schienen 5? Wenn nicht, kennst du ein Juwel wie Doorkeeper?

erstelle ich manuell die Routen in routes.rb

Beispiele:

get '/oauth/applications/:id(.:format)', to: 'doorkeeper/applications#show', as: 'edit_oauth_application' 
    get '/oauth/applications(.:format)', to: 'doorkeeper/applications#index', as: 'root' 

Und jetzt habe ich "nicht definierte Methode` flash '".

+0

Glück dabei? Derselbe Fehler hier –

Antwort

0

Ich ändern ActionController :: API von ActionController :: Base, damit es funktioniert.

1

Ich stolperte über das gleiche Problem beim Versuch, Türsteher auf einer Rails 5 api nur Anwendung zu verwenden.

Ändern meiner ApplicationController Vorfahren zu ActionController::Base, wie vorgeschlagen, hat für mich nicht geklappt. Nach etwas tieferem Graben fand ich eine Lösung.

Kurze Antwort ist: doorkeeper ist so konzipiert, nicht mit api nur Anwendungen zu arbeiten, wie Sie here und here sehen können.

Die Art, wie ich es geschafft, es war funktioniert, alle Middleware und Helfer wieder zu aktivieren, dass die api-only Option für Rails 5 Streifen aus ...

Kurz,

require "sprockets/railtie" 

Hinzufügen an der Spitze der config/application.rb und

config.api_only = false 

in der gleichen Datei Einstellung macht Last Pförtner wie erwartet.

Auch wenn jetzt Ihre Anwendung eine Reihe von Middleware geladen hat, die zuvor entfernt wurde, wird die API-Funktionalität beibehalten und die Controller sind immer noch leicht, da sie immer noch von ActionController::API erben.