我有一个用户注册表。我在其中有 facebook 登录按钮。我想从 facebook 获取信息并在用户注册表单中显示该信息。我怎样才能做到这一点?我使用omniauth_facebook
并成功登录,但我不想登录。我想在我的用户注册表单字段中显示该 Facebook 信息。
问问题
269 次
3 回答
1
您可以在下面找到一个 rails cast 帮助您管理项目中的 OpenID、twitter 和 facebook 身份验证服务:
http://railscasts.com/episodes?utf8=%E2%9C%93&search=omniauth
于 2012-12-25T13:36:15.683 回答
1
你可以使用像koala或fb_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 回答