I’m trying to add authentications controller for my current devise system, in order to provide multiple logins with facebook and twitter.
To do that, I’m following this tutorial: http://railscasts.com/episodes/236-omniauth-part-2
My problem is, for the person, who hasn’t registered yet, and trying to register with twitter.
So I need to create both user and authentication for that.
My code is the following:
user = User.new
token = omni['credentials'].token
token_secret = omni['credentials'].secret
user.provider = omni.provider
user.uid = omni.uid
user.authentications.build(:provider => omni['provider'], :uid => omni['uid'], :token => token, :token_secret => token_secret)
if user.save
flash[:notice] = "Logged in."
sign_in_and_redirect(:user, user)
else
session["devise.user_attributes"] = user.attributes
redirect_to new_user_registration_path
end
So at the end of the registration process, the new user is created. However in the database, I don’t see any twitter authentication record with respect to that user.
Is that because of the user.authentications.build ?
That would be great if you can help me.
Thanks.
As a data point: The railscasts you’re referring to references Omniauth pre-1.0, which had a slighly different strategy than what that railscsts reference. (Note: I’m using the exact method you’re referencing on a live site ). In this case, the build calls “apply_omniauth” –
Make sure you’ve created (as they reference in the video), a registrations controller which builds the resource. Here is my current working example:
However, you still need to create the authentication record, here is my exact call:
Hope it helps.