我一直在使用https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview让 facebook 身份验证正常工作。我做了它告诉我的所有事情,但它仍然不起作用。我最初遇到了 Cookie 溢出错误,所以在进行了一些谷歌搜索之后,我在 omniauth_callbacks_controller.rb 中添加了 except('extra') ,如下所示
session["devise.facebook_data"] = request.env["omniauth.auth"].except('extra')
这消除了错误,但它仍然没有让用户登录。事实上,我什至不认为它会创建用户(使用 heroku rails c 检查)。
它给了我一个 url,后面附加了“sign_up# = ”。可能是什么问题?
user = User.create(name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.info.email,
username:auth.info.email,
password:Devise.friendly_token[0,20]
)
我添加了“用户名”,因为我在我的用户模型中使用它,但我似乎想不出我可能需要编辑/添加的任何其他内容。
Rails 3.1.3、Ruby 1.9.3p194(2012-04-20 修订版 35410)[x86_64-darwin11.4.1]
===============快速更新===========================
所以看起来我让用户保存了 - 我可以在数据库中看到它。但是,它仍然没有让用户登录,并且我无法使用创建的用户登录,因为我只知道用户名和电子邮件,而不知道密码。简而言之,我让 Facebook 向我发送信息,并且我能够将其保存到数据库,但不能重定向到登录屏幕。