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:
- 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! !!
- 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=''....''