【问题标题】:Facebook Authentication with Devise + OmniAuth-Facebook not doing anythingFacebook Authentication with Devise + OmniAuth-Facebook 不做任何事情
【发布时间】:2012-06-28 08:25:59
【问题描述】:

我一直在使用 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 向我发送信息,我能够将其保存到数据库,但不能重定向到登录屏幕。

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-3 authentication facebook-graph-api


    【解决方案1】:

    好的,我想通了。

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

    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
    

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

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 2014-09-17
      • 2014-08-19
      相关资源
      最近更新 更多