Pregunta

Estoy usando OmniAuth + Diseñar para permitir a los usuarios registrar el uso de Facebook / Twitter / Gowalla / etc unido a las cuentas de usuario normales. Ahora, cuando un usuario inicia sesión en el uso de cualquiera de éstos, o su cuenta, todas sus redes sociales se unen en una mesa de autenticaciones.

Tengo que ser capaz de extraer contenido de cualquiera de estos proveedores, tales como sus mensajes de twitter o sus comprobaciones de Facebook Lugares, etc. Yo entiendo que voy a necesitar utilizar una joya diferente, plugin, lo que sea para hacer esto, pero conseguir la necesidad de trabajar con esas joyas (y solicitudes de maquillaje) config que es confuso para mí.

Tengo que ser capaz de acceder a los elementos de configuración de proveedor en omniauth.rb así que tengo API Claves y secretos, etc, entonces tengo que ser capaz de agarrar las fichas de la materia OAuth para hacer peticiones.

Otras joyas como https://github.com/jrallison/authlogic_oauth parecen almacenar oauth_token, oauth_secret y oauth_token, pero OmniAuth no lo hace.

Como seguramente se puede decir que soy muy nuevo a Ruby, Rails y OAuth, así que esto está resultando ser una aplicación muy desafiante. Ayuda es muy necesaria.

¿Fue útil?

Solución

Ordenado!

Alta token y secreta a la mesa autenticaciones se describe en http://railscasts.com/episodes/236-omniauth -parte-2 pero cambió la línea authentication.build tomar dos parámetros más:

authentications.build(
    :provider => omniauth['provider'], 
    :uid => omniauth['uid'], 
    :token => omniauth['credentials']['token'], 
    :secret => omniauth['credentials']['secret']
)

a continuación, utiliza el ejemplo de código de http://dev.twitter.com/pages/oauth_single_token#ruby

class CronController < ApplicationController

    def recent_tweets
        # Exchange your oauth_token and oauth_token_secret for an AccessToken instance.

        def prepare_access_token(oauth_token, oauth_token_secret)
            consumer = OAuth::Consumer.new("APIKey", "APISecret"
                { :site => "http://api.twitter.com"
                })
            # now create the access token object from passed values
            token_hash = { :oauth_token => oauth_token,
                                         :oauth_token_secret => oauth_token_secret
                                     }
            access_token = OAuth::AccessToken.from_hash(consumer, token_hash )
            return access_token
        end

        auth = current_user.authentications.find(:first, :conditions => { :provider => 'twitter' })

        # Exchange our oauth_token and oauth_token secret for the AccessToken instance.
        access_token = prepare_access_token(auth['token'], auth['secret'])

        # use the access token as an agent to get the home timeline
        response = access_token.request(:get, "http://api.twitter.com/1/statuses/home_timeline.json")

        render :json => response.body
    end
end

Al tirar el contenido de current_user.authentications (im encontrar la primera, ya que sólo deberían tener uno) que puedo agarrar el token y la seguridad y su buena alllll.

Ahora puedo modificar esto, conseguir cosas salvado, faff con el JSON y tomar lo que necesito. Estoy seguro de que Facebook va a ser bastante similar.

Otros consejos

Es esto lo que está buscando? http://railscasts.com/episodes/236-omniauth-part-2 :) Se muestra cómo recuperar datos como el correo electrónico. No estoy seguro si eso es lo que estás buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top