ruby-on-rails oauth ruby-on-rails-3.1 omniauth

ruby on rails - omniauth OAuthException y OAuth:: no autorizado



ruby-on-rails ruby-on-rails-3.1 (3)

He instalado omniauth 1.0. También tengo oauth-0.4.5, oauth2-0.5.1, omniauth-facebook-1.0.0, omniauth-twitter-0.0.6.

omniauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :developer unless Rails.env.production? provider :facebook, ENV[''167257285348131''], ENV[''c8c722f697scb2afcf1600286c6212a9''], :scope => ''email,offline_access,read_stream'', :display => ''popup'' provider :twitter, ENV[''fma2L22ObJCW52QrL7uew''], ENV[''4aZfhCAOdiS7ap8pHJ7I1OZslFwVWWLiAMVpYUI''] end session_controller.rb class SessionsController < ApplicationController require ''omniauth-facebook'' require ''omniauth-twitter'' require ''omniauth'' def create @user = User.find_or_create_from_auth_hash(auth_hash) self.current_user = @user redirect_to ''/'' end def auth_hash request.env[''omniauth.auth''] end end

También agrego gemas ''omniauth'' ''omniauth-facebook'' ''omniauth-twitter'' a gemfile

Hay dos problemas:

  1. Cuando voy http: // localhost: 3000 / auth / facebook obtengo {"error": {"mensaje": "falta el parámetro client_id.", "Tipo": "OAuthException"}}

Y el enlace graph.facebook.com/oauth/authorize?response_type=code&client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Ffacebook%2Fcallback&parse=query&scope=email%2Coffline_access%2Cread_stream&display=popup ¡ Y no hay client_id! !!

  1. Cuando voy a http: // localhost: 3000 / auth / twitter obtengo OAuth :: No autorizado

401 no autorizado

¿Algunas ideas?


Alex D. tiene razón en que el ENV [] lo rompe. Para crear omniauth.rb, de modo que use diferentes claves en diferentes entornos, simplemente ponga:

provider :twitter, TWITTER_KEY, TWITTER_SECRET

en omniauth.rb

y luego en los archivos de configuración de su entorno (config / environments / development.rb, etc.) ponga la clave que desea usar para ese entorno.

config / environments / development.rb:

TWITTER_KEY = ''aaaaaaa'' TWITTER_SECRET = ''aaaabbbbbb''

config / environments / production.rb:

TWITTER_KEY = ''ccccccc'' TWITTER_SECRET = ''ccccdddddd''


Se han producido cambios importantes en omniauth 1.0 - https://github.com/intridea/omniauth

OmniAuth 1.0 tiene varios cambios bruscos desde la versión 0.x. Puede establecer la dependencia a ~> 0.3.2 si no desea hacer la actualización más difícil. Vea la wiki para más información.

Intentaría revertir omniauth a 0.3.2:

gem install omniauth --version ''~> 0.3.2''

o si está usando bundler, en su Gemfile:

gem omniauth, ''~> 0.3.2''


ENV[''something'']

mira a su entorno vars por "algo", por lo que esperaría

something=''12345''

entonces deberías hacerlo así

export AUTH_FB_KEY=''....'' export AUTH_FB_SECRET=''...''

Comprobar con

env

y actualiza tu configuración

provider :facebook, ENV[''AUTH_FB_KEY''], ENV[''AUTH_FB_SECRET'']

si usas heroku

heroku config:add AUTH_FB_KEY=''....''