2013-06-05 14 views
6

Byłem zablokowany na drodze przez 2 dni na podstawowym uwierzytelnianiu omniauth z twitterem. Śledziłem z railscastem Ryana Batesa na prostym omariauth, ale nie udało mi się ominąć wyjątku OAuth :: Unauthorized 401, który jest zgłaszany podczas próby zalogowania. Proszę, pomóż! Mój kod zostanie wklejony poniżej:Omniauth-twitter w szynach: OAuth :: Nieautoryzowane 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/initializers/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 

Odpowiedz

4

Wystąpił problem podczas ustawiania adresu URL wywołania zwrotnego aplikacji na localhost.
Spróbuj ustawić adres URL wywołania zwrotnego aplikacji Twitter za pomocą skrótu URL.

Możesz użyć skrótu adresu URL, takiego jak http://goo.gl/, i zastąp swój adres URL połączenia zwrotnego adresem, który pasuje do Ciebie.

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

niestety twitter odrzuca skrócone adresy URL dla wywołania zwrotne :( – user2040608

+1

@ user2040608 ja tak nie myślę? Zresztą http://stackoverflow.com/questions/800827/twitter-oauth-callbackurl-localhost-development – oldergod

+0

pracował dla mnie! Dzięki! – CloudRide

Powiązane problemy