devise_oauth2_authenticatable
devise_oauth2_authenticatable copied to clipboard
devise extension to handle oauth2 (facebook graph) - works with Rails 3 and devise 1.1
= devise_oauth2_authenticatable
== This fork works with Devise 1.1 + Rails 3
==Quick tutorial for Devise 1.1 + Rails 3 + devise_oauth2_authenticatable
Set up your Facebook app at http://developers.facebook.com/setup/
Create the Rails app: rails new YOUR_APP cd YOUR_APP
Add the following lines to your Gemfile: gem "oauth2" gem "devise", :git => "git://github.com/plataformatec/devise.git" gem "devise_oauth2_authenticatable", :git => "git://github.com/jerryluk/devise_oauth2_authenticatable.git"
Run the following commands: bundle install rails g devise:install rails g devise User rails g devise:oauth2_authenticatable APP_ID SECRET
Your DeviseCreateUsers migration should look like this: class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.database_authenticatable t.rememberable t.trackable t.oauth2_authenticatable t.string :email
t.timestamps
end
add_index :users, :oauth2_uid, :unique => true
end
def self.down
drop_table :users
end
end
Make sure user.rb has the following line: devise :oauth2_authenticatable, ...
Add this to your application_controller.rb: before_filter :authenticate_user!
Add the sign in/sign out links to your applications.html.erb: <% if user_signed_in? %> <%= link_to "Sign out", destroy_user_session_path %> <% else %> <%= link_to_oauth2 "Sign In with Facebook" %> <% end %>
The usual stuffs: rm public/index.html rake db:create rake db:migrate rails s
Navigate your browser to http://localhost:3000, there are many things to fix but you are mostly there!
== This is the basic framework for an OAuth2 gem for Devise.
It currently works with FacebookGraph, to get started begin by registering a new application at
http://developers.facebook.com/setup/
A generator is provided for creating your oauth yml file
rails g devise:oauth2_authenticatable
Ex:
rails g devise:oauth2_authenticatable APP_ID SECRET 'email,offline_access,publish_stream'
for more details
http://developers.facebook.com/docs/authentication/
It's based on the devise facebook gem provided by grimen
http://github.com/grimen/devise_facebook_connectable
And uses the example provided in OAuth2 library provided by mbleigh
http://github.com/intridea/oauth2
DB Migration :
add_column :users, :oauth2_uid, :integer, :limit => 8 # BIGINT unsigned / 64-bit int
add_column :users, :oauth2_token, :string, :limit => 149 # [128][1][20] chars
add_index :users, :oauth2_uid, :unique => true
Note:
A little souce of confusion when working with Facebook Graph
The api key and secret key are no the same a Facebook Connect/the old API.
The client id should be your application id and the client_key, should be your API key (not secret key)
== TODO
Write tests : Currently no tests have been written. My bad.
Add Javascript / token based auth : Facebook graph offes a complete authorization solution using javascript and a returned authentication token. Adding optional support for this would complete the Facebook Graph authentication interface.
Generalize for OAuth2: Add support for other OAuth2 services. Wrote this specifically for facebook graph, althought configuration arugments should be generalized to support other interfaces.
Description goes here.
== Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
== Copyright
Copyright (c) 2010 bhbryant. See LICENSE for details.