authlogic_oauth2 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest ADDED
@@ -0,0 +1,13 @@
1
+ Manifest
2
+ README.rdoc
3
+ Rakefile
4
+ authlogic_oauth2.gemspec
5
+ init.rb
6
+ lib/authlogic_oauth2.rb
7
+ lib/authlogic_oauth2/acts_as_authentic.rb
8
+ lib/authlogic_oauth2/helper.rb
9
+ lib/authlogic_oauth2/oauth2_process.rb
10
+ lib/authlogic_oauth2/session.rb
11
+ lib/authlogic_oauth2/version.rb
12
+ lib/oauth2_callback_filter.rb
13
+ rails/init.rb
data/README.rdoc ADDED
@@ -0,0 +1,123 @@
1
+ = Authlogic OAuth2
2
+
3
+ This plugin works very much like jrallison's authlogic_oauth gem (http://github.com/jrallison/authlogic_oauth), and much of the code is repurposed from his work. If you have used authlogic_oauth before, then you should have no problem using authlogic_oauth2.
4
+
5
+ == Install and use
6
+
7
+ === 1. Install the authlogic and oauth2 gems
8
+
9
+ config.gem "authlogic"
10
+ config.gem "oauth2"
11
+ config.gem "authlogic_oauth2"
12
+
13
+ $ sudo rake gems:install
14
+
15
+ For older version of Rails, you can install authlogic_oauth2 as a plugin:
16
+
17
+ $ script/plugin install git://github.com/andyhite/authlogic_oauth2.git
18
+
19
+ === 2. Set up and configure authlogic
20
+
21
+ For information about how to set up and configure authlogic, please consult the authlogic README (http://github.com/binarylogic/authlogic)
22
+
23
+ === 3. Add the necessary fields to your authlogic users table
24
+
25
+ class AddOauth2FieldsToUser < ActiveRecord::Migration
26
+ def self.up
27
+ add_column :users, :oauth2_token, :string
28
+ add_index :users, :oauth2_token
29
+ end
30
+
31
+ def self.down
32
+ remove_column :users, :oauth2_token
33
+ end
34
+ end
35
+
36
+ IMPORTANT: make sure that you allow null values for email, crypted_password, and password_salt if they aren't required for OAuth2 users.
37
+
38
+ === 4. Define the oauth2_client and oauth2_scope class methods in your UserSession model
39
+
40
+ The oauth2_client method should return an OAuth2::Client that is configured for your OAuth2 provider.
41
+
42
+ The oauth2_scope method should return a string representing the extended permission you need to request from the OAuth2 provider.
43
+
44
+ Here's an example for Facebook:
45
+
46
+ class UserSession < Authlogic::Session::Base
47
+ def self.oauth2_client
48
+ OAuth2::Client.new("CLIENT_ID", "SECRET_KEY", :site => "https://graph.facebook.com")
49
+ end
50
+
51
+ def self.oauth2_scope
52
+ 'email,user_birthday'
53
+ end
54
+ end
55
+
56
+ === 5. Make sure you save your objects properly
57
+
58
+ We need to redirect the user to their oauth2 provider so they can authenticate and then pick things back up when they're returned, so any calls to User#save or UserSession#save need to be updated to the following format:
59
+
60
+ @user.save do |result|
61
+ if result
62
+ # Do something
63
+ else
64
+ # Do something else
65
+ end
66
+ end
67
+
68
+ and
69
+
70
+ @user_session.save do |result|
71
+ if result
72
+ # Do something
73
+ else
74
+ # Do something else
75
+ end
76
+ end
77
+
78
+ === 6. Add the login and register buttons to their respective forms
79
+
80
+ In file app/views/user_sessions/new.html.erb:
81
+
82
+ <% form_for @user_session, :url => user_session_path do |f| %>
83
+ # All your other form stuff goes here, if you need it.
84
+ <%= oauth2_login_button :value => "Login using Facebook" %>
85
+ <% end %>
86
+
87
+ In file app/views/users/new.html.erb:
88
+
89
+ <% form_for @user, :url => account_path do |f| %>
90
+ # All your other form stuff goes here, if you need it.
91
+ <%= oauth2_register_button :value => "Register using Facebook" %>
92
+ <% end %>
93
+
94
+ === 7. There is no step 7
95
+
96
+ If you followed these steps correctly, then you should be able to register and login using OAuth2.
97
+
98
+ == Accessing API endpoints
99
+
100
+ You can easily access any API endpoints that are exposed to an OAuth2 user by utilizing the oauth2 gem's "get" method on current_user#oauth2_client. For instance, you can access information about the currently logged in user's Facebook profile by doing the following:
101
+
102
+ current_user.oauth2_client.get('/me')
103
+
104
+ This will return a JSON string representing the user's profile information.
105
+
106
+ You can pre-populate user information by using the after_oauth2_authentication hook in your user model:
107
+
108
+ require 'json'
109
+
110
+ class User < ActiveRecord::Base
111
+ ...
112
+
113
+ def after_oauth2_authentication
114
+ json = oauth2_client.get('/me')
115
+
116
+ if user_data = JSON.parse(json)
117
+ self.name = user_data['name']
118
+ self.facebook_uid = user_data['id']
119
+ end
120
+ end
121
+ end
122
+
123
+ You can get more information about the Facebook Graph API on the following website: http://developers.facebook.com/docs/api
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+ require File.dirname(__FILE__) + "/lib/authlogic_oauth2/version"
5
+
6
+ Echoe.new('authlogic_oauth2', AuthlogicOauth2::Version::STRING) do |p|
7
+ p.description = "Authlogic OAuth2 is an extension of the Authlogic library to add OAuth2 support. OAuth2 can be used to allow users to login with their Facebook credentials."
8
+ p.url = "http://github.com/andyhite/authlogic_oauth2"
9
+ p.author = "Andrew Hite"
10
+ p.email = "andrew@andrew-hite.com"
11
+ p.runtime_dependencies = ['authlogic', 'oauth2']
12
+ end
13
+
14
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{authlogic_oauth2}
5
+ s.version = "1.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Andrew Hite"]
9
+ s.date = %q{2010-06-13}
10
+ s.description = %q{Authlogic OAuth2 is an extension of the Authlogic library to add OAuth2 support. OAuth2 can be used to allow users to login with their Facebook credentials.}
11
+ s.email = %q{andrew@andrew-hite.com}
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/authlogic_oauth2.rb", "lib/authlogic_oauth2/acts_as_authentic.rb", "lib/authlogic_oauth2/helper.rb", "lib/authlogic_oauth2/oauth2_process.rb", "lib/authlogic_oauth2/session.rb", "lib/authlogic_oauth2/version.rb", "lib/oauth2_callback_filter.rb"]
13
+ s.files = ["Manifest", "README.rdoc", "Rakefile", "authlogic_oauth2.gemspec", "init.rb", "lib/authlogic_oauth2.rb", "lib/authlogic_oauth2/acts_as_authentic.rb", "lib/authlogic_oauth2/helper.rb", "lib/authlogic_oauth2/oauth2_process.rb", "lib/authlogic_oauth2/session.rb", "lib/authlogic_oauth2/version.rb", "lib/oauth2_callback_filter.rb", "rails/init.rb"]
14
+ s.homepage = %q{http://github.com/andyhite/authlogic_oauth2}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Authlogic_oauth2", "--main", "README.rdoc"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{authlogic_oauth2}
18
+ s.rubygems_version = %q{1.3.7}
19
+ s.summary = %q{Authlogic OAuth2 is an extension of the Authlogic library to add OAuth2 support. OAuth2 can be used to allow users to login with their Facebook credentials.}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<authlogic>, [">= 0"])
27
+ s.add_runtime_dependency(%q<oauth2>, [">= 0"])
28
+ else
29
+ s.add_dependency(%q<authlogic>, [">= 0"])
30
+ s.add_dependency(%q<oauth2>, [">= 0"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<authlogic>, [">= 0"])
34
+ s.add_dependency(%q<oauth2>, [">= 0"])
35
+ end
36
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ File.dirname(__FILE__) + "/rails/init.rb"
@@ -0,0 +1,110 @@
1
+ module AuthlogicOauth2
2
+ module ActsAsAuthentic
3
+ def self.included(klass)
4
+ klass.class_eval do
5
+ extend Config
6
+ add_acts_as_authentic_module(Methods, :prepend)
7
+ end
8
+ end
9
+
10
+ module Config
11
+ # The name of the oauth2 token field in the database.
12
+ #
13
+ # * <tt>Default:</tt> :oauth2_token
14
+ # * <tt>Accepts:</tt> Symbol
15
+ def oauth2_token_field(value = nil)
16
+ rw_config(:oauth2_token_field, value, :oauth2_token)
17
+ end
18
+ alias_method :oauth2_token_field=, :oauth2_token_field
19
+ end
20
+
21
+ module Methods
22
+ include Oauth2Process
23
+
24
+ # Set up some simple validations
25
+ def self.included(klass)
26
+ klass.class_eval do
27
+ alias_method "#{oauth2_token_field.to_s}=".to_sym, :oauth2_token=
28
+ end
29
+
30
+ return if !klass.column_names.include?(klass.oauth2_token_field.to_s)
31
+
32
+ klass.class_eval do
33
+ validate :validate_by_oauth2, :if => :authenticating_with_oauth2?
34
+
35
+ validates_uniqueness_of klass.oauth2_token_field, :scope => validations_scope, :if => :using_oauth2?
36
+
37
+ validates_length_of_password_field_options validates_length_of_password_field_options.merge(:if => :validate_password_with_oauth2?)
38
+ validates_confirmation_of_password_field_options validates_confirmation_of_password_field_options.merge(:if => :validate_password_with_oauth2?)
39
+ validates_length_of_password_confirmation_field_options validates_length_of_password_confirmation_field_options.merge(:if => :validate_password_with_oauth2?)
40
+ validates_length_of_login_field_options validates_length_of_login_field_options.merge(:if => :validate_password_with_oauth2?)
41
+ validates_format_of_login_field_options validates_format_of_login_field_options.merge(:if => :validate_password_with_oauth2?)
42
+ end
43
+
44
+ # email needs to be optional for oauth2
45
+ klass.validate_email_field = false
46
+ end
47
+
48
+ def save(perform_validation = true, &block)
49
+ if perform_validation && block_given? && redirecting_to_oauth2_server?
50
+ # Save attributes so they aren't lost during the authentication with the oauth2 server
51
+ session_class.controller.session[:authlogic_oauth2_attributes] = attributes.reject!{|k, v| v.blank?}
52
+ redirect_to_oauth2
53
+ return false
54
+ end
55
+
56
+ result = super
57
+ yield(result) if block_given?
58
+ result
59
+ end
60
+
61
+ # accessors for oauth2 fields
62
+ def oauth2_token
63
+ read_attribute(oauth2_token_field)
64
+ end
65
+
66
+ def oauth2_token=(value)
67
+ write_attribute(oauth2_token_field, value.blank? ? nil : value)
68
+ end
69
+
70
+ def oauth2_client
71
+ access_token
72
+ end
73
+
74
+ private
75
+
76
+ def authenticating_with_oauth2?
77
+ # Controller isn't available in all contexts (e.g. irb)
78
+ return false unless session_class.controller
79
+
80
+ # Initial request when user presses one of the button helpers
81
+ (session_class.controller.params && !session_class.controller.params[:register_with_oauth2].blank?) ||
82
+ # When the oauth2 provider responds and we made the initial request
83
+ (oauth2_response && session_class.controller.session && session_class.controller.session[:oauth2_request_class] == self.class.name)
84
+ end
85
+
86
+ def authenticate_with_oauth2
87
+ # Restore any attributes which were saved before redirecting to the oauth2 server
88
+ self.attributes = session_class.controller.session.delete(:authlogic_oauth2_attributes)
89
+ self.oauth2_token = generate_access_token.token
90
+ self.after_oauth2_authentication if self.respond_to?(:after_oauth2_authentication)
91
+ end
92
+
93
+ def access_token
94
+ OAuth2::AccessToken.new(oauth2, read_attribute(oauth2_token_field))
95
+ end
96
+
97
+ def using_oauth2?
98
+ respond_to?(oauth2_token_field) && !oauth2_token.blank?
99
+ end
100
+
101
+ def validate_password_with_oauth2?
102
+ !using_oauth2? && require_password?
103
+ end
104
+
105
+ def oauth2_token_field
106
+ self.class.oauth2_token_field
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,16 @@
1
+ module AuthlogicOauth2
2
+ module Helper
3
+ def oauth2_register_button(options = {})
4
+ oauth2_button('register_with_oauth2', options)
5
+ end
6
+
7
+ def oauth2_login_button(options = {})
8
+ oauth2_button('login_with_oauth2', options)
9
+ end
10
+
11
+ private
12
+ def oauth2_button(name, options = {})
13
+ "<input type='submit' value='#{options[:value]}' name='#{name}' id='user_submit' class='#{options[:class]}'/>"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,64 @@
1
+ module AuthlogicOauth2
2
+ module Oauth2Process
3
+
4
+ private
5
+
6
+ def validate_by_oauth2
7
+ validate_email_field = false
8
+
9
+ if oauth2_response.blank?
10
+ redirect_to_oauth2
11
+ else
12
+ authenticate_with_oauth2
13
+ end
14
+ end
15
+
16
+ def redirecting_to_oauth2_server?
17
+ authenticating_with_oauth2? && oauth2_response.blank?
18
+ end
19
+
20
+ def redirect_to_oauth2
21
+ authorize_url = oauth2.web_server.authorize_url(:redirect_uri => build_callback_url, :scope => oauth2_scope)
22
+
23
+ # Store the class which is redirecting, so we can ensure other classes
24
+ # don't get confused and attempt to use the response
25
+ oauth2_controller.session[:oauth2_request_class] = self.class.name
26
+
27
+ # Tell our rack callback filter what method the current request is using
28
+ oauth2_controller.session[:oauth2_callback_method] = oauth2_controller.request.method
29
+
30
+ oauth2_controller.redirect_to authorize_url
31
+ end
32
+
33
+ def build_callback_url
34
+ oauth2_controller.url_for :controller => oauth2_controller.controller_name, :action => oauth2_controller.action_name
35
+ end
36
+
37
+ def generate_access_token
38
+ oauth2.web_server.get_access_token(oauth2_controller.params[:code], :redirect_uri => build_callback_url)
39
+ end
40
+
41
+ def oauth2_response
42
+ oauth2_controller.params && oauth2_controller.params[:code]
43
+ end
44
+
45
+ def oauth2_controller
46
+ is_auth_session? ? controller : session_class.controller
47
+ end
48
+
49
+ def oauth2
50
+ is_auth_session? ? self.class.oauth2_client : session_class.oauth2_client
51
+ end
52
+
53
+ def oauth2_scope
54
+ is_auth_session? ? self.class.oauth2_scope : session_class.oauth2_scope
55
+ rescue NoMethodError
56
+ nil
57
+ end
58
+
59
+ def is_auth_session?
60
+ self.is_a?(Authlogic::Session::Base)
61
+ end
62
+
63
+ end
64
+ end
@@ -0,0 +1,75 @@
1
+ module AuthlogicOauth2
2
+ # This module is responsible for adding oauth2
3
+ # to the Authlogic::Session::Base class.
4
+ module Session
5
+ def self.included(klass)
6
+ klass.class_eval do
7
+ extend Config
8
+ include Methods
9
+ end
10
+ end
11
+
12
+ module Config
13
+ # * <tt>Default:</tt> :find_by_oauth2_token
14
+ # * <tt>Accepts:</tt> Symbol
15
+ def find_by_oauth2_method(value = nil)
16
+ rw_config(:find_by_oauth2_method, value, :find_by_oauth2_token)
17
+ end
18
+ alias_method :find_by_oauth2_method=, :find_by_oauth2_method
19
+ end
20
+
21
+ module Methods
22
+ include Oauth2Process
23
+
24
+ def self.included(klass)
25
+ klass.class_eval do
26
+ validate :validate_by_oauth2, :if => :authenticating_with_oauth2?
27
+ end
28
+ end
29
+
30
+ # Hooks into credentials so that you can pass a user who has already has an oauth2 access token.
31
+ def credentials=(value)
32
+ super
33
+ values = value.is_a?(Array) ? value : [value]
34
+ hash = values.first.is_a?(Hash) ? values.first.with_indifferent_access : nil
35
+ self.record = hash[:priority_record] if !hash.nil? && hash.key?(:priority_record)
36
+ end
37
+
38
+ def record=(record)
39
+ @record = record
40
+ end
41
+
42
+ # Clears out the block if we are authenticating with oauth2,
43
+ # so that we can redirect without a DoubleRender error.
44
+ def save(&block)
45
+ block = nil if redirecting_to_oauth2_server?
46
+ super(&block)
47
+ end
48
+
49
+ private
50
+
51
+ def authenticating_with_oauth2?
52
+ # Initial request when user presses one of the button helpers
53
+ (controller.params && !controller.params[:login_with_oauth2].blank?) ||
54
+ # When the oauth2 provider responds and we made the initial request
55
+ (oauth2_response && controller.session && controller.session[:oauth2_request_class] == self.class.name)
56
+ end
57
+
58
+ def authenticate_with_oauth2
59
+ if @record
60
+ self.attempted_record = record
61
+ else
62
+ self.attempted_record = search_for_record(find_by_oauth2_method, generate_access_token.token)
63
+ end
64
+
65
+ if !attempted_record
66
+ errors.add_to_base("Could not find user in our database, have you registered with your Oauth2 account?")
67
+ end
68
+ end
69
+
70
+ def find_by_oauth2_method
71
+ self.class.find_by_oauth2_method
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,51 @@
1
+ module AuthlogicOauth2
2
+ # A class for describing the current version of a library. The version
3
+ # consists of three parts: the +major+ number, the +minor+ number, and the
4
+ # +tiny+ (or +patch+) number.
5
+ class Version
6
+ include Comparable
7
+
8
+ # A convenience method for instantiating a new Version instance with the
9
+ # given +major+, +minor+, and +tiny+ components.
10
+ def self.[](major, minor, tiny)
11
+ new(major, minor, tiny)
12
+ end
13
+
14
+ attr_reader :major, :minor, :tiny
15
+
16
+ # Create a new Version object with the given components.
17
+ def initialize(major, minor, tiny)
18
+ @major, @minor, @tiny = major, minor, tiny
19
+ end
20
+
21
+ # Compare this version to the given +version+ object.
22
+ def <=>(version)
23
+ to_i <=> version.to_i
24
+ end
25
+
26
+ # Converts this version object to a string, where each of the three
27
+ # version components are joined by the '.' character. E.g., 2.0.0.
28
+ def to_s
29
+ @to_s ||= [@major, @minor, @tiny].join(".")
30
+ end
31
+
32
+ # Converts this version to a canonical integer that may be compared
33
+ # against other version objects.
34
+ def to_i
35
+ @to_i ||= @major * 1_000_000 + @minor * 1_000 + @tiny
36
+ end
37
+
38
+ def to_a
39
+ [@major, @minor, @tiny]
40
+ end
41
+
42
+ MAJOR = 1
43
+ MINOR = 0
44
+ TINY = 1
45
+
46
+ # The current version as a Version instance
47
+ CURRENT = new(MAJOR, MINOR, TINY)
48
+ # The current version as a String
49
+ STRING = CURRENT.to_s
50
+ end
51
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + "/authlogic_oauth2/version"
2
+ require File.dirname(__FILE__) + "/authlogic_oauth2/oauth2_process"
3
+ require File.dirname(__FILE__) + "/authlogic_oauth2/acts_as_authentic"
4
+ require File.dirname(__FILE__) + "/authlogic_oauth2/session"
5
+ require File.dirname(__FILE__) + "/authlogic_oauth2/helper"
6
+ require File.dirname(__FILE__) + "/oauth2_callback_filter"
7
+
8
+ ActiveRecord::Base.send(:include, AuthlogicOauth2::ActsAsAuthentic)
9
+ Authlogic::Session::Base.send(:include, AuthlogicOauth2::Session)
10
+ ActionController::Base.helper AuthlogicOauth2::Helper
11
+
12
+ # Throw callback rack app into the middleware stack
13
+ ActionController::Dispatcher.middleware = ActionController::MiddlewareStack.new do |m|
14
+ ActionController::Dispatcher.middleware.each do |klass|
15
+ m.use klass
16
+ end
17
+ m.use Oauth2CallbackFilter
18
+ end
@@ -0,0 +1,12 @@
1
+ class Oauth2CallbackFilter
2
+ def initialize(app)
3
+ @app = app
4
+ end
5
+
6
+ def call(env)
7
+ unless env["rack.session"][:oauth2_callback_method].blank?
8
+ env["REQUEST_METHOD"] = env["rack.session"].delete(:oauth2_callback_method).to_s.upcase
9
+ end
10
+ @app.call(env)
11
+ end
12
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require "authlogic_oauth2"
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: authlogic_oauth2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 1
10
+ version: 1.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Andrew Hite
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-06-13 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: authlogic
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: oauth2
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description: Authlogic OAuth2 is an extension of the Authlogic library to add OAuth2 support. OAuth2 can be used to allow users to login with their Facebook credentials.
50
+ email: andrew@andrew-hite.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files:
56
+ - README.rdoc
57
+ - lib/authlogic_oauth2.rb
58
+ - lib/authlogic_oauth2/acts_as_authentic.rb
59
+ - lib/authlogic_oauth2/helper.rb
60
+ - lib/authlogic_oauth2/oauth2_process.rb
61
+ - lib/authlogic_oauth2/session.rb
62
+ - lib/authlogic_oauth2/version.rb
63
+ - lib/oauth2_callback_filter.rb
64
+ files:
65
+ - Manifest
66
+ - README.rdoc
67
+ - Rakefile
68
+ - authlogic_oauth2.gemspec
69
+ - init.rb
70
+ - lib/authlogic_oauth2.rb
71
+ - lib/authlogic_oauth2/acts_as_authentic.rb
72
+ - lib/authlogic_oauth2/helper.rb
73
+ - lib/authlogic_oauth2/oauth2_process.rb
74
+ - lib/authlogic_oauth2/session.rb
75
+ - lib/authlogic_oauth2/version.rb
76
+ - lib/oauth2_callback_filter.rb
77
+ - rails/init.rb
78
+ has_rdoc: true
79
+ homepage: http://github.com/andyhite/authlogic_oauth2
80
+ licenses: []
81
+
82
+ post_install_message:
83
+ rdoc_options:
84
+ - --line-numbers
85
+ - --inline-source
86
+ - --title
87
+ - Authlogic_oauth2
88
+ - --main
89
+ - README.rdoc
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ hash: 3
98
+ segments:
99
+ - 0
100
+ version: "0"
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 11
107
+ segments:
108
+ - 1
109
+ - 2
110
+ version: "1.2"
111
+ requirements: []
112
+
113
+ rubyforge_project: authlogic_oauth2
114
+ rubygems_version: 1.3.7
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: Authlogic OAuth2 is an extension of the Authlogic library to add OAuth2 support. OAuth2 can be used to allow users to login with their Facebook credentials.
118
+ test_files: []
119
+