我正在嘗試爲我當前的設計系統添加身份驗證控制器,以提供與Facebook和Twitter的多個登錄。 要做到這一點,我遵循本教程:http://railscasts.com/episodes/236-omniauth-part-2Rails - 生成不會在數據庫中創建記錄
我的問題是,誰尚未註冊,並試圖註冊與Twitter的人。 所以我需要爲此創建用戶和身份驗證。
我的代碼如下:
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
因此,在登記過程的結束時,創建的新用戶。但是在數據庫中,我沒有看到有關該用戶的任何Twitter認證記錄。
是因爲user.authentications.build?
如果你能幫助我,那會很棒。
謝謝。
所以基本上,除了註冊控制器,你正在使用創建!而不是構建? – CanCeylan
正確。正如Jesse在下面所說的,之所以是構建和創建的區別之所在。 – Chris
是的非常感謝你的工作。我寫了一個包含更新的gems和rails版本的所有流程的教程:http://www.orhancanceylan.com/rails-twitter-and-facebook-authentications-with-omniauth-and-devise/ – CanCeylan