client = FBGraph::Client.new(:client_id => Settings.fb_app_id,:secret_id => Settings.fb_app_secret,:token => params[:access_token])
info = client.selection.me.info!
status 200
{
:id => info.id,
:profile_name => info.name,
:first_name => info.first_name,
:last_name => info.last_name,
:authentication_token => client.access_token,
:email => info.Email
}
end
答案 0 :(得分:0)
你还没有给出足够的代码来继续。您如何使用Javascript SDK或服务器端进行身份验证?
您是否收到过Facebook的访问令牌?
用户的其他参数是否正常工作,即first_name?
为什么它是info.Email我会有,但它可能是info.email但也许不是吗?
您是否申请了扩展权限?我认为电子邮件不在标准权限范围内
一些有用的链接
https://developers.facebook.com/docs/games/canvas-games/authenticate/ https://github.com/nov/fb_graph https://developers.facebook.com/docs/reference/login/extended-permissions/
不是一个真正的答案,但你没有提供足够的代码或解释来完全回答
答案 1 :(得分:0)
了解你的其他参数是否正如Jon Day所说,这很重要。如果是这样,您需要做的就是将info.Email更改为info.email。
https://github.com/mkdynamic/omniauth-facebook
以上omniauth-facebook自述文件提供了您可以调用的AuthHash示例。 :email属性嵌套在:info中,如:first_name,:name:和:last_name params。所以,如果这些对您有用,那么info.email也应该可以正常工作。
来自链接的AuthHash:
{
:provider => 'facebook',
:uid => '1234567',
:info => {
:nickname => 'jbloggs',
:email => 'joe@bloggs.com',
:name => 'Joe Bloggs',
:first_name => 'Joe',
:last_name => 'Bloggs',
:image => 'http://graph.facebook.com/1234567/picture?type=square',
:urls => { :Facebook => 'http://www.facebook.com/jbloggs' },
:location => 'Palo Alto, California',
:verified => true
},