2013-03-07 13 views
5

Po kliknięciu na [http://127.0.0.1:3000/auth/twitter] otrzymuję OAuth :: Nieautoryzowane 401 Nieautoryzowany błąd w szynach. Śledzę wideo Railscast # 241 do uwierzytelniania Twittera za pomocą aplikacji mojej szyny. Często googlowałem, ale nie mogłem znaleźć na to odpowiedzi.OAuth :: Nieautoryzowane 401 Nieautoryzowane dla omniauth-świergot w szynach

Info regarding app on twitter: 
Callback URL: [http://127.0.0.1:3000/auth/twitter/callback] 
Website: [http://127.0.0.1:3000] 


### omniauth.rb 
Rails.application.config.middleware.use OmniAuth::Builder do 
    # provider :developer unless Rails.env.production? 
    provider :twitter, ENV['75UOAIDmKrRXvXKBhNvKA'], ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A'] 
end 

### routes.rb 
Chilli::Application.routes.draw do 
    resources :posts 
    root :to => 'posts#index' 
    #match '/auth/:twitter/callback' => 'sessions#create', :as => :auth_callback 
    match 'auth/twitter/callback', to: 'sessions#create' 
end 

### application.html.erb 
<div id="user_nav"> 
<%= link_to "Sign in with Twitter", "/auth/twitter"%> 
</div> 

### sessions_controller.rb 
class SessionsController < ApplicationController 
    def create 
    user = User.from_omniauth(env['omniauth.auth']) 
    session[:user_id] = user.id 
    redirect_to root_url, notice: "Signed in." 
    end 
end 

### user.rb 
class User < ActiveRecord::Base 
    attr_accessible :name, :provider, :uid 
    def self.from_omniauth(auth) 
    where(auth.slice("provider", "uid")).first || create_from_omniauth(auth) 
    end 

    def self.create_from_omniauth(auth) 
    create! do |user| 
     user.provider = auth["provider"] 
     user.uid = auth["uid"] 
     user.name = auth["info"]["nickname"] 
    end 
    end 
end 
+0

Czy sprawdzić ustawienia aplikacji na twitter.com? Upewnij się, że masz jakiś adres URL jako wywołanie zwrotne. –

Odpowiedz

12

W omniauth.rb co jest
ENV['75UOAIDmKrRXvXKBhNvKA'], ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A']?

Jeśli 75UOAIDmKrRXvXKBhNvKA i GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A są twoje APP_ID i APP_SECRET to powinno być zapisane jako:

provider :twitter, '75UOAIDmKrRXvXKBhNvKA', 'GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A' 
+0

@varunvlalan, Zmęczony twoją sugestią, ale otrzymuję ten sam błąd. Nie wiem co robić? –

+1

Jeszcze jedna rzecz, którą zauważyłem w _routes.rb_ 'match 'auth/twitter/callback', to: 'sessions # create'' Dodaj ścieżkę za pomocą"/". 'match '/ auth/twitter/callback', to: 'sessions # create'' – varunvlalan

+0

@VSiingh jaki był problem? – OnkelK

1

miałem ten sam problem, co ustalone mój problem był następujący:

zmienia:

ENV['75UOAIDmKrRXvXKBhNvKA'],ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A'] 

do:

'75UOAIDmKrRXvXKBhNvKA', 'GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A' 

i oddanie a '/' przed '' auth tutaj:

match '/auth/:provider/callback', to: 'sessions#create', via: 'get' 
match '/auth/failure', to: redirect('/'), via: 'get' 
Powiązane problemy