miércoles, 19 de diciembre de 2012

Conectar Rails con Facebook, Twitter (I)

Para poder conectar nuestra aplicación con Facebook, Twitter, ... usaremos la gema devise, ya que contiene OmniAuth, lo que nos permitirá usar un conector para casi cualquier sitio que queramos asociar.
En el Gemfile, teendremos:


gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'

La configuración del modelo de usuario se hará como indicamos en el post: "Integrar decvise con Rails"

Posteriormente, debemos hacer una migración para añadir los campos necesarios para la conexión con otras redes:
provider:string uid:string token:string

Y añadir a User la extención omniauthable

Ahora tenemor que configurar los parámetros. Eso lo haremos en el fichero config/initializers/devise.rb:
Devise.setup do |config|
  config.omniauth :facebook, "APP_ID", "APP_SECRET", {:scope => 'email, offline_access', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}

end


En este caso, estamso ocnfigurando el login mediante Facebook. Las claves (APP_ID y APP_SECRET) las obtenemos en Facebook, entrando en el programa para desarrolladores.
Los parámetros que vemos en client_options, es debido a que nuestra aplicación estará alojada en Heroku, por lo que son necesarios.

Para hacer la llamada a este login, tendremos que poner en la vista:

<%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %>

Los helpers user_omniauth los asigna la gema omniaouth, por lo que sólo tendremos que ocuparnos de pasarle el provider (facebook en nuestro caso)

Hasta aquí, tenemos lista la llamada a Facebook. Ahora falta implementar el callback para recibir los datos una vez que el usuario esté logado. Esto lo veremos en el próximo artículo