Search code examples
ruby-on-railsoauth-2.0activeresourcebasecamp37-signals

Configuring ActiveResource to support OAuth2


I need to be able configure ActiveResource to connect with OAuth2 or basic authentication on a connection by connection basis. I have found a couple ways to configure ActiveResource with OAuth2, but they don't seem that elegant and don't lend themselves to a dynamic type configuration. Any help out there?


Solution

  • I figured out how to do this by having my ActiveResource classes inherit from an intermediate class:

      class Resource < ActiveResource::Base
      end
    
      class MyClass < Resource
      end
    

    This allows you to dynamically set the authentication (as well as site, format, etc) for all classes that inherit from the intermediate Resource class:

    if the user has OAuth2 configured:

       Resource.headers['authorization'] = 'Bearer ' + my_oauth2_token
    

    or if the user is just using basic authentication:

       Resource.user = my_user_name
       Resource.password = my_password
    

    Hope this helps someone!