rails app ruby-on-rails oauth ruby-on-rails-3 tumblr oauth-ruby

ruby on rails - app - Obtener un token de acceso con OAuth-Ruby y Tumblr API(Rails 3)



rails app (1)

Estoy usando OAuth-Ruby para hacer una autenticación OAuth con una aplicación Tumblr. Puedo escribir código que progresa a través de los diversos pasos de OAuth, pero no puedo obtener un token de acceso ni hacer una solicitud. Puedo obtener una clave de solicitud, redireccionar al usuario a Tumblr para autenticar y otorgar acceso, y recibir una clave de solicitud autenticada. Pero no puedo ir más allá de eso.

He registrado mi aplicación Tumblr; supongamos para esta pregunta que me ha proporcionado las siguientes claves:

  • Clave del consumidor de OAuth: @oauth_consumer_key
  • Clave secreta: @secret_key

(Tengo valores reales, pero los mantengo ocultos aquí por razones obvias).

Estoy ejecutando el siguiente código dentro de un controlador que se ejecuta cuando el usuario envía un formulario, que forma almacena información en la variable @tumblog:

#0. provided when registering application @key = @oauth_consumer_key @secret = @secret_key @site = ''http://www.tumblr.com'' @consumer = OAuth::Consumer.new(@key, @secret, { :site => @site, :request_token_path => ''/oauth/request_token'', :authorize_path => ''/oauth/authorize'', :access_token_path => ''/oauth/access_token'', :http_method => :post } ) if @consumer #1. get a request token @request_token = @consumer.get_request_token; session[:request_token] = @request_token session[:tumblog] = @tumblog #2. have the user authorize redirect_to @request_token.authorize_url else flash[:error] = "Failed to acquire request token from Tumblr." render ''new'' end

Este código me lleva a la página correcta en Tumblr, donde el usuario otorga o niega el acceso de mi aplicación a la cuenta del usuario. Suponiendo que el usuario otorgue acceso, Tumblr redirige a mi aplicación, a una devolución de llamada que proporcioné cuando registré la aplicación con Tumblr. Hasta ese punto, todo funciona maravillosamente.

Mi devolución de llamada OAuth ejecuta el siguiente código en el controlador:

if params[:oauth_token] && params[:oauth_verifier] @tumblog = session[:tumblog] @request_token = session[:request_token] #3. get an access token @access_token = @request_token.get_access_token . . . . end

En el paso 3, hay un problema. Parece que no puedo obtener un token de acceso con la línea:

@access_token = @request_token.get_access_token

¿Puede alguien decirme qué debo hacer para obtener el token de acceso? Cuando ejecuto esa línea, obtengo un error de OAuth :: No autorizado.

Realmente aprecio cualquier consejo. He estado buscando en Google y probando cosas diferentes por varios días. ¡Gracias!


Uso el plugin oauth de Pelle y lo modifiqué un poco para que sea compatible con xauth como este:

require ''rubygems'' require ''oauth'' CONSUMER_KEY = ''YOUR_CONSUMER_KEY'' CONSUMER_SECRET = ''YOUR_CONSUMER_SECRET'' consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site => ''https://www.tumblr.com/oauth/access_token'') access_token = consumer.get_access_token(nil, {}, { :x_auth_mode => ''client_auth'', :x_auth_username => "[email protected]", :x_auth_password => "password"}) tumblr_credentials = access_token.get(''http://www.tumblr.com/api/authenticate'') puts access_token puts access_token.token puts access_token.secret puts tumblr_credentials.body