2014-09-17 9 views
15

mi hanno messo in atto diverse strategie si trovano in StackOverflow, ma finora, nessuno sembra influenzare l'errore di essere gettato:OAuth :: Unauthorized 401 Autorizzazione richiesta utilizzando OmniAuth-Twitter in Rails 3.2

OAuth::Unauthorized 401 Authorization Required

Sto seguendo Ryan Bates' RC#241 e arrivo al punto in cui faccio clic su "Accedi con Twitter" e ottengo l'errore. Sono andato avanti e ha aggiunto il percorso di risposta al file routes.rb come elencato qui:

routes.rb:

match 'auth/twitter/callback', to: 'user#update' 

pensare che l'errore potrebbe essere causato dalla funzione di callback. Lo stesso errore. Uno sguardo alla mia dev.log mostra questo:

Started GET "/auth/twitter" for 127.0.0.1 at 2014-09-16 18:52:08 -0600 
(twitter) Request phase initiated. 

OAuth::Unauthorized (401 Authorization Required): 
oauth (0.4.7) lib/oauth/consumer.rb:216:in `token_request' 
oauth (0.4.7) lib/oauth/consumer.rb:136:in `get_request_token' 
omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:29:in `request_phase' 
omniauth-twitter (1.0.1) lib/omniauth/strategies/twitter.rb:60:in `request_phase' 
omniauth (1.2.2) lib/omniauth/strategy.rb:215:in `request_call' 
omniauth (1.2.2) lib/omniauth/strategy.rb:183:in `call!' 
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call' 
omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call' 
... 
script/rails:6:in `require' 
script/rails:6:in `<top (required)>' 
-e:1:in `load' 
-e:1:in `<main>' 

Quindi so il problema è con l'autenticazione con Twitter uscire. Deve essere la CHIAVE e il SEGRETO, giusto?

Ora, ho inserito KEY e SECRET come variabili ENV [], come stringhe dirette al file environment/development.rb, estrapolate le variabili "ENV []", ecc., Come da suggerimenti trovati in tutto lo Stack.

mia chiave e SECRET ora risiedono in una configurazione personalizzata come discusso here...

config/initializers/social_media.rb:

TWITTER_CONFIG = YAML.load_file("#{::Rails.root}/config/twitter.yml")[::Rails.env] 

Il config/initializers/omniauth.rb del file:

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, TWITTER_CONFIG['app_id'], TWITTER_CONFIG['secret'] 
end 

Tutte le idee sul ActionController: Exception caught OAuth::Unauthorized - 401 Authorization Required? Questo è probabilmente un errore di Noob, ma il mio Google-Fu è solo Google-F'ed in questo momento ...

risposta

53

Dopo una notte di strappare i miei capelli, ho preso a guardare l'URL di richiamata su Twitter developer console.

Salvatevi qualche problema e non dimenticate di impostare questo. Non è menzionato direttamente nel RailsCast, anche se Ryan lo passa brevemente.

Quando si imposta l'URL di richiamata, non inserire semplicemente //localhost:3000 non funzionerà. Invece di utilizzare:

http://127.0.0.1:3000/ 
+0

Oppure si può usare 'lvh.me: 3000' che si risolve a 127.0.0.1 – aridlehoover

+0

Se si utilizza la gemma 'stregoneria', invece, c'è un bug - vedere questa soluzione: https://github.com/NoamB/sorcery/issues/540#issuecomment-65752910 –

+0

questo è stato un vero toccasana. Sto usando i tutorial di RailsApp e non è stato molto chiaro su questa parte. –

Problemi correlati