I am using the Devise 1.2 to integrate with OmniAuth (https://
github.com/plataformatec/devise/wiki/OmniAuth:-Overview). The
authorization/callback process works fine but I am not able to access
information from the user_info hash that is passed through the
request. I have tried several things within the Users controller but I
can't seem to fill current_user.name/image/ etc. I am new to Rails
and have hit somewhat of a road block and I am just looking for some
direction. I have exhausted the options that I am familiar with...
----User Model---
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token['extra']['user_hash']
if user = User.find_by_email(data["email"])
user
else # Create an user with a stub password.
User.create!(:email => data["email"], :password =>
Devise.friendly_token[0,20])
end
end
def self.new_with_session(params, session)
super.tap do |user|
if data = session["devise.facebook_data"]
user(:email => data["email"],:name =>
data["name"], :avatar_url => data["image"])
end
end
end
In the self.new_with_sessions.....I added the attributes to user
thinking that they would be created with the new session
I am using Omniauth for the purpose of connecting the user to my app
via facebook/twitter...therefore the CanCan combo wont really be of
much use unless I assign privileges to certain users in my app. The
issue I am encountering is specific to the hash of user specific
information that facebook/twitter passes into my app via the
registration callback.
With something as important as authentication, I just don't see the need
to use devise. I prefer writing my own authentication solution. I've
used devise and it's very detailed. But, like many authentication
solutions out there, it never covers everything I need.
My suggestion to you is to create your own.
Here's an easy railscast that can help you with creating a very simple
solution, and one that you can eventually adapt to support omniauth.