2016-04-21 7 views
1

Ich versuche Omniath-Twitter zu installieren und einige Probleme zu begegnen, hauptsächlich mit der oben beschriebenen. Anfangs hatte ich dieses Problem nicht, aber jetzt mache ich es und kratze mich am Kopf, warum das passiert ist. Ich habe den Consumer-Schlüssel und den geheimen Schlüssel in die Datei secrets.yml und auch in meine omniauth.rb-Datei kopiert, wie unten beschrieben. Ich habe eine Menge widersprüchlicher Informationen darüber gelesen, ob diese Datei benötigt wird und all diese Informationen in die Datei devise.rb einfließen. Ich habe in meiner Datei devise.rb keine Änderung oder einen Verweis auf Omniauth gemacht. Ich habe auch sichergestellt, dass die entsprechende URL Callback-Link (http://127.0.0.1:3000/auth/twitter/callback) in der Twitter-Entwickler-Website platziert wurde.Routing Error - Keine Route stimmt überein [GET] "/ auth/twitter" Omniahth-Twitter mit Devise Gem

Hier ist mein Code -

routes.rb

Rails.application.routes.draw do 


    get "/auth/:provider/callback" => "social_logins#create" 

    devise_for :users, :controllers => { registrations: 'registrations' } 



    resources :users 
    resources :events do 

    resources :bookings 
    end 
    # get 'welcome/index' 


    authenticated :user do 
    root 'events#index', as: "authenticated_root" 
    end 


    root 'welcome#index' 


end 

social_logins.controller.rb

class SocialLoginsController < ApplicationController 
    def create 


    @details = request.env["omniauth.auth"].to_yaml 

    @provider = @details["provider"] 
    @provider_id = @details["uid"] 

    @user = User.where(provider: @provider, provider_id: @provider_id).first 

    if @user.present? 
     #sign them in 
    else 
     # make a new user 
     @user = User.new 
     @user.provider = @provider 
     @user.provider_id = @provider_id 

     # because of has_secure_password - will this work? 
     @user.password = "AAAAAA!!" 
     @user.password_confirmation = "AAAAAA!!" 

     # let's save the key and secret 
     @user.key = @details["credentials"]["token"] 
     @user.secret = @details["credentials"]["secret"] 

     # lets fill in their details 
     @user.name = @details["info"]["name"] 
     @user.email = @details["info"]["email"] || "[email protected]" 

     @user.save! 
    end 


     session[:uid] = @user.id 
     flash[:success] = "You've logged in" 
     redirect_to root_path 
    end 

end 

index.html.erb

<header> 
<nav> 
      <div class="links"> 
       <%= link_to 'Sign up', new_user_registration_path %> 
       <%= link_to 'Sign in', new_user_session_path %> 
       <%= link_to 'Go to Events', events_path %> 
       <%= link_to "Log in with Twitter", "/auth/twitter" %> 
      </div> 

</nav>   


</header> 

omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do 
provider :twitter, Rails.application.secrets.twitter_api_key, Rails.application.secrets.twitter_api_secret 
end 
+0

bitte Ausgabe für 'Rake-Routen | grep auth' bereitstellen –

Antwort

0

Haben Sie dies in Ihrem Benutzermodell?

devise omniauth_providers: [:twitter] 
Verwandte Themen