2013-06-05 6 views
6

Sono stato bloccato per 2 giorni sull'autenticazione base omniauth con Twitter. Ho seguito il railscast di Ryan Bates su semplice omniauth, ma non sono riuscito a superare l'eccezione di OAuth :: Unauthorized 401 che viene sollevata quando provo ad accedere. Per favore aiuto! Il mio codice viene incollato sotto:Omniauth-twitter in rails: OAuth :: Non autorizzato 401

twitter info: 
    website: [http://127.0.0.1:3000] 
    callbarck url: [http://127.0.0.1:3000/auth/twitter/callback] 

//routes.rb

Sentimentalist::Application.routes.draw do 

    resources :dashboard, only: [:index] 
    resources :welcome 

    root :to => 'welcome#index' 

    match '/auth/twitter/callback', to: 'sessions#create' 

    match "/signout" => "sessions#destroy", :as=>:signout 


    match ':controller(/:action(/:id))(.:format)' 
end 

//application.html.erb

  <!DOCTYPE html> 
    <html> 
    <head> 
     <title>Sentimentalist</title> 
     <%= stylesheet_link_tag "application", :media => "all" %> 
     <%= javascript_include_tag "application" %> 
     <%= csrf_meta_tags %> 
     <% yield(:head) %> 
    </head> 
    <body> 
     <div id="container"> 
      <div id="user_nav"> 
        <% if current_user %> 
         Welcome <%= current_user.name %>! 
         <%= link_to "Sign Out", signout_path %> 
        <% else %> 
         <%= link_to "Sign in with Twitter", "/auth/twitter" %> 
        <% end %> 
      </div> 
     </div> 

    <%= yield %> 

    </body> 
    </html> 

// config/inizializzatori/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do 
     provider :twitter, '###', '###' 
    end 

// sessions_controller.rb

def create 
     auth = request.env["omniauth.auth"] 
     user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) ||User.create_with_omniauth(auth) 
     session[:user_id] = user.id 
     redirect_to root_url, :notice => "Signed in!" 
    end 

    def destroy 
     session[:user_id] = nil 
     redirect_to root_url, :notice => "Signed out!" 
    end 

risposta

4

C'è un problema quando si imposta l'url di richiamata dell'app su localhost.
Prova a impostare l'URL di callback dell'applcation di Twitter utilizzando un url shortner.

È possibile utilizzare un url shortner come http://goo.gl/ e sostituire l'url di richiamata con quello che fa per voi.

http://127.0.0.1:3000/auth/twitter/callback => http://goo.gl/QVYCy 
+0

gli URL purtroppo Twitter rifiuta abbreviato per le richiamate :( – user2040608

+1

@ user2040608 Io non la penso così? In ogni caso, http://stackoverflow.com/questions/800827/twitter-oauth-callbackurl-localhost-development – oldergod

+0

lavorato per me! Grazie! – CloudRide