A generic OAuth strategy for OmniAuth.
Ruby
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib Bump version to 1.1.0 Apr 22, 2015
spec
.gitignore
.rspec Initial import, specs are passing but nothing is checked to be actual… Sep 22, 2011
.rubocop.yml Enforce coding style with RuboCop Apr 22, 2015
.travis.yml Enforce coding style with RuboCop Apr 22, 2015
Gemfile Enforce coding style with RuboCop Apr 22, 2015
LICENSE.md
README.md Remove beta note Apr 22, 2015
Rakefile
omniauth-oauth.gemspec Cleanup gemspec Apr 22, 2015

README.md

OmniAuth OAuth

This gem contains a generic OAuth strategy for OmniAuth. It is meant to serve as a building block strategy for other strategies and not to be used independently (since it has no inherent way to gather uid and user info).

Creating an OAuth Strategy

To create an OmniAuth OAuth strategy using this gem, you can simply subclass it and add a few extra methods like so:

require 'json'
require 'omniauth-oauth'

module OmniAuth
  module Strategies
    class SomeSite < OmniAuth::Strategies::OAuth
      # Give your strategy a name.
      option :name, "some_site"

      # This is where you pass the options you would pass when
      # initializing your consumer from the OAuth gem.
      option :client_options, {:site => "https://api.somesite.com"}

      # These are called after authentication has succeeded. If
      # possible, you should try to set the UID without making
      # additional calls (if the user id is returned with the token
      # or as a URI parameter). This may not be possible with all
      # providers.
      uid{ request.params['user_id'] }

      info do
        {
          :name => raw_info['name'],
          :location => raw_info['city']
        }
      end

      extra do
        {
          'raw_info' => raw_info
        }
      end

      def raw_info
        @raw_info ||= JSON.load(access_token.get('/me.json')).body
      end
    end
  end
end