Search code examples
apioauthcallbackruby-on-rails-4tumblr

Rails + Oauth + Tumblr


I came across an interesting issue with Tumblr's oauth implementation that I wanted to document for others. When ever i used the code below i received a "400 Bad Request", when I inspected the respose in wireshark I discovered this was coming back from tumblr "Out-of-band ("oob") callbacks are not supported by this implementation.". This is wwierd because my tumblr application has a call back field that I had explicitly set.

# Your tumblr details:
key = "Your Key"
secret = "Your Secret"
site = "http://www.tumblr.com"

# puts 'Setting up request'
@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
                                               })


puts 'Asking for token, dies here.'
@request_token = @consumer.get_request_token()

puts 'Got Token Storing'
session[:request_token]=@request_token

puts 'Redirecting'
redirect_to @request_token.authorize_url

Solution

  • Turns out that call back field in tumblr's api isn't being taken into account.

    you need to change this line:

    @request_token = @consumer.get_request_token()
    

    to be:

    @request_token = @consumer.get_request_token(:oauth_callback => "http://192.168.2.115:5000/oauth/callback")
    

    That seems to make it all work.