Ruby on rails 如何获得Facebook用户';s使用考拉宝石发送电子邮件

Ruby on rails 如何获得Facebook用户';s使用考拉宝石发送电子邮件,ruby-on-rails,ruby,facebook,facebook-graph-api,Ruby On Rails,Ruby,Facebook,Facebook Graph Api,我正在尝试使用FB Open Graph让我的应用程序更新用户的属性。我已安装考拉并使用facebook omniauth进行身份验证。简单地说,我想查询我的数据库,寻找一个与其fb id匹配的用户,如果该用户不存在,那么我想用来自facebook API的数据更新用户模型的属性。另外,我使用mongoid作为数据库的活动记录 在我的用户模型中,我有这个方法 def facebook @facebook | |=考拉::facebook::API.new(oauth|u令牌) 结束 在我的控制器

我正在尝试使用FB Open Graph让我的应用程序更新用户的属性。我已安装考拉并使用facebook omniauth进行身份验证。简单地说,我想查询我的数据库,寻找一个与其fb id匹配的用户,如果该用户不存在,那么我想用来自facebook API的数据更新用户模型的属性。另外,我使用mongoid作为数据库的活动记录

在我的用户模型中,我有这个方法

def facebook @facebook | |=考拉::facebook::API.new(oauth|u令牌) 结束

在我的控制器中,我的一个方法中有这些代码行

@user=user.where(facebook\u-uid:params[:auth\u-id])

当我在控制台中玩时,User.facebook.get_object(“电子邮件”)不会向我返回用户的电子邮件。有人知道怎么做吗

谢谢

试试这个:

  facebook = Koala::Facebook::API.new(oauth_token)
  public_attributes = facebook.get_object("me")
如果public_属性不返回电子邮件,则表示用户未授权您的应用程序的电子邮件。检查是否将“电子邮件”范围添加到OAuth授权过程中。如果使用Desive,则以下是配置:

  config.omniauth :facebook,  "facebook_app_key",  "facebook_app_secret", {scope: "email"}
这应该起作用:

graph = Koala::Facebook::API.new(oauth_access_token)
profile = graph.get_object('me', fields:'email')

现在,
profile['email']
将为您获取该用户的电子邮件。

在我的控制台中玩了很多次之后,我终于找到了答案。用于检索用户电子邮件的代码行是:user.facebook.get_object(“me”,fields=>“email”)[“email”]我确信有一种更简单的方法,但这对我有效。请确保您已获得具有
user_email
权限的oauth令牌。然后你可以发布
@facebook.get_object user_id
,它将通过用户的电子邮件返回用户信息问题是如何使用考拉,而不是omniauth。要获取电子邮件,首先需要通过OAuth向用户请求权限。您将获得一个OAuth访问令牌,可以使用该令牌访问Graph API并获取用户电子邮件
Koala::Facebook::OAuth.new(app\u id,app\u secret,callback\u url)。url\u for\u OAuth\u code(:permissions=>“email”)
过去总是将get\u对象包含在email中-现在有时候Facebook不会包含它,除非你在字段列表中包含email…如何同时获得name和email?
graph = Koala::Facebook::API.new(oauth_access_token)
profile = graph.get_object('me', fields:'email')