Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 使用OAuth和Desive Rails 4应用程序登录facebook时的额外属性_Ruby On Rails 4_Devise_Omniauth - Fatal编程技术网

Ruby on rails 4 使用OAuth和Desive Rails 4应用程序登录facebook时的额外属性

Ruby on rails 4 使用OAuth和Desive Rails 4应用程序登录facebook时的额外属性,ruby-on-rails-4,devise,omniauth,Ruby On Rails 4,Devise,Omniauth,我一直在寻找一种方法来做下面的事情,但我还没有成功 我已经用我的应用程序实现了Facebook登录,但我正在寻找一种方法,要求用户提供一些Facebook没有提供的额外属性(例如家庭地址) 我尝试在用户首次登录后将其重定向到edit_user_registration(编辑用户注册)页面,但我无法添加新属性,因为用户不知道自己的密码,这是由Facebook及其encripted提供的 提前感谢您的回答 第一个覆盖设计::OmniAuthCallbackController控制器。为Faceboo

我一直在寻找一种方法来做下面的事情,但我还没有成功

我已经用我的应用程序实现了Facebook登录,但我正在寻找一种方法,要求用户提供一些Facebook没有提供的额外属性(例如家庭地址)

我尝试在用户首次登录后将其重定向到edit_user_registration(编辑用户注册)页面,但我无法添加新属性,因为用户不知道自己的密码,这是由Facebook及其encripted提供的


提前感谢您的回答

第一个覆盖
设计::OmniAuthCallbackController
控制器。为Facebook连接添加一个方法,在该方法中,您必须做两件事。首先,如果用户已经在您的系统上,则此方法应直接让用户登录

其次,如果用户是新用户,您应该构建一个用户对象,从Facebook提取所需的参数,并使用这些参数更新此用户对象。之后,您应该呈现一个页面,用户可以在其中输入自己的密码并添加所需的额外信息

omniauth\u回调\u controller.rb

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    user = User.find_by_fb_token(token)
    if user.present?
      sign_in user, event: :authentication
    else
      @user = User.new(**Facebook parameters**)
      render 'devise/registrations/after_social_connection'
    end
  end
end
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

    def configure_permitted_parameters
       devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:password, :password_confirmation, :email. :name, :biography, :profile_picture) }
    end
end
供进一步阅读

在您尝试添加路由更改时,是否可以在服务器日志中发布错误或堆栈?因为我现在正试图实现这一点,而我一直在获取缺少模板的错误缺少模板用户/omniauth_回调/facebook,designe/omniauth_回调/facebook,designe/facebook,application/facebook和{:locale=>[:es],:formats=>[:html],:variants=>[],:handlers=>[:erb,:builder,:raw,:ruby,:jbuilder,:coffee]}。在以下位置搜索:“/home/************/app/views”*“/home/***/.rvm/gems/ruby-2.1.2/gems/design-3.3.0/app/views”*“/home/.rvm/gems/ruby-2.1.2/gems/twitter-bootstrap-rails-3.2.0/app/views”
design\u for:users=>{:controllers=>{:registrations=>“registrations=>“registrations”、:omniauth\u callbacks=>“omniauth\u=>“omniauth callbacks”、:passwords=>“omniauth\u=>“omni
这是在Desive for omniauth中配置路由的方式。你不需要采取进一步行动。