繁体   English   中英

使用Devise和OmniAuth的Facebook身份验证-Facebook不执行任何操作

[英]Facebook Authentication with Devise + OmniAuth-Facebook not doing anything

我一直在使用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检查)。

它给了我一个网址,网址后面附加了“ 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向我发送了信息,并且能够将其保存到数据库,但无法重定向到登录屏幕。

好吧,我知道了。

首先,我必须在用户模型中将att_accessible添加为“ provider”和“ uid”(当然,在生成迁移之后),如下所示:

attr_accessible :password, :password_confirmation, :remember_me, :username, :email,
:bio, :website_blog, :company, :name, :image, :provider, :uid

然后,在ApplicationController.rb中,我必须调整after_sign_in_path_for(resource)方法。 我正在使用Devise,但我在一段时间后进行了更改,以便在登录后将用户重定向到上一页,但是现在我猜想是在涉及Facebook的情况下,这导致了错误。 因此,我不得不注释掉之前的内容,仅使用root_url,我就可以登录用户并重定向到主页。

def after_sign_in_path_for(resource)       
 sign_in_url = root_url
 #sign_in_url = url_for(:action => 'new', :controller => 'sessions', :only_path => false, :protocol => 'http')  

  #if (request.referer == sign_in_url)
  #  super
  #else
  #  request.referer
  #end
end

现在,我只需要弄清楚如何将用户重定向到上一页而不引起错误,这将是完美的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM