1

我有一个用户注册表。我在其中有 facebook 登录按钮。我想从 facebook 获取信息并在用户注册表单中显示该信息。我怎样才能做到这一点?我使用omniauth_facebook并成功登录,但我不想登录。我想在我的用户注册表单字段中显示该 Facebook 信息。

4

3 回答 3

1

您可以在下面找到一个 rails cast 帮助您管理项目中的 OpenID、twitter 和 facebook 身份验证服务:

http://railscasts.com/episodes?utf8=%E2%9C%93&search=omniauth

于 2012-12-25T13:36:15.683 回答
1

你可以使用像koalafb_graph这样的 gem来获取用户信息,因为你有他们的访问令牌,然后用他们的信息填写表格:

使用 fb_graph:

user = FbGraph::User.me(ACCESS_TOKEN).fetch

然后以您的形式:

<form>
   <input type="text" id="first_name" value="<%= user.first_name %>">
   <input type="text" id="last_name" value="<%= user.last_name %>">
   ....
</form>

这将使用用户信息填充表单,但是为什么不在使用 Facebook 登录时在回调函数中创建用户,因为无论如何您都必须登录才能获取令牌?

于 2012-12-25T21:33:06.430 回答
0

@JasonTruluck 和 @stsd 感谢您的支持。

我这样做了,我正在使用OmniAuth

https://github.com/plataformatec/devise/wiki/OmniAuth:-概述

在我的控制器中,我定义了这个

private

  def authentication_sign_in
    omniauth = request.env["omniauth.auth"]
    user = User.new
    user.apply_omniauth(omniauth)
    session[:omniauth] = {:firstname => user.firstname, :lastname => user.lastname, :email => user.email }
    session[:provider] = omniauth['provider']
    session[:uid] = omniauth['uid']
    redirect_to new_member_registration_url
  end

在我的注册控制器中

def new
  if session[:omniauth]
    resource = build_resource(session[:omniauth])
  else
    resource = build_resource({})
  end
  respond_with resource
end
于 2012-12-26T12:44:52.590 回答