当前位置: 首页 > 知识库问答 >
问题:

devise+omniauth facebook:sign_in后current_user为零

夹谷成仁
2023-03-14
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    @user = User.find_for_facebook(env["omniauth.auth"].extra.raw_info, current_user)

    logger.info ">>>>>> OMNIAUTH FB BEGIN >>>>>>"
    logger.info env["omniauth.auth"].inspect
    logger.info "User is: #{@user.inspect}"

    session["devise.facebook_data"] = request.env["omniauth.auth"].except("extra")

    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
    res = sign_in(:user, @user)

    logger.info "Sign In Result: #{res.inspect}"
    logger.info "CURRENT_USER: #{current_user.inspect}"
    logger.info "<<<<<< OMNIAUTH FB END <<<<<<"

    respond_to do |format|
      format.json
    end
  end
end
    null

共有1个答案

莫英卓
2023-03-14

我不知道这是否真的是你所描述的解决方案,但我想知道这是否:

@user=user.find_for_facebook(env[“omniauth.auth”].extra.raw_info,current_user)

应该读成这样?

 类似资料:
  • Devise 是 Rails 框架一个灵活的认证解决方案,基于 Warden 构建。 Devise 是: 基于 Rack; 完整的 MVC 解决方案; 同时支持多个 Model 签入; 模块化设计 示例程序:https://github.com/plataformatec/devise/wiki/Example-Applications

  • 问题内容: 我使用Flask-Login 在模板中提供对象。我想编写一个宏来显示评论表单或登录链接,具体取决于用户是否登录。如果我直接在模板中使用此代码,它将起作用: 我将相同的代码放在宏中,然后将宏导入模板中。 当我尝试加载此页面时,出现的错误是: 当然,简单的解决方法是current_user作为参数传递并使用该参数(进行签名comment_form(user, form)),尽管这是一个非常

  • 问题内容: 我正在开发一个RailsWeb应用程序,该应用程序还为移动设备提供了基于JSON的API。移动客户端应首先通过(电子邮件/通过)获得令牌,然后客户端将使用该令牌进行后续的API调用。 我对Devise相当陌生,我正在寻找一个Devise API外观,并希望它返回true / false,然后基于此,我将创建并返回令牌或返回拒绝消息。但似乎Devise没有提供类似的信息。 我知道Devi

  • 我正在尝试为我的Devise User模型添加一些额外的信息,如first_name、last_name、年龄、性别和城市。 当我填写注册表格并单击提交时,我会收到以下错误: SQLite3::ConstraintExc的:不是NULL约束失败:users.first_name:插入到用户(电子邮件,encrypted_password,created_at,updated_at)值 (?, ?,

  • 我正在使用Rails 5.1,我添加了用于用户身份验证的设计。我在表格中添加了一些额外的属性。通过 ajax 创建新用户后,用户已创建,但缺少某些属性。我检查了日志,设计不会在插入查询中发送这些列。 首先,我将device_parameter_sanitizer添加到应用程序控制器: 我在我的用户模型中添加了attr_accessor: attr_accessor:password1、:passw

  • 问题内容: 我正在使用Rails做一个单页应用程序。登录和注销时,使用ajax调用Devise控制器。我遇到的问题是当我1)登录2)退出然后再次登录时不起作用。 我认为这与CSRF令牌有关,该令牌在我退出时会重置(尽管它不应该出现),并且由于它是单页的,因此在xhr请求中发送了旧的CSRF令牌,从而重置了会话。 更具体地说,这是工作流程: 登入 登出 登录(成功201。但是在服务器日志中打印) 后