railscast(http://railscasts.com/episodes/235-omniauth-part-1)をフォローした後、rails3アプリでdeviseとomniauthを使用しています。
ログインできます。データベースで、sign_in_count列がインクリメントされていることがわかります。
ただし、user_signed_in?常にfalseをcurrent_user?返し、 。を返す場合no method error。
この問題はrails.jsが原因であるという他の回答を見たことがありますが、私はrails.jsを使用していません。
私のコントローラーは
def create
omniauth = request.env ["omniauth.auth"]
authentication = Authentication.find_by_provider_and_uid(omniauth ['provider']、omniauth ['uid'])
認証の場合
sign_in_and_redirect(:user、authentication.user)
elsif current_user
current_user.authentications.create!(:provider => omniauth ['provider']、:uid => omniauth ['uid'])
redirect_to root_url
そうしないと
user = User.new
user.apply_omniauth(omniauth)
user.save(:validate => false)の場合
sign_in(:user、user)
redirect_to root_url
そうしないと
flash [:notice]="アカウントの作成中にエラーが発生しました"
redirect_to root_url
終わり
終わり
終わり