如何使用Meteor中的accounts-facebook获取用户的电子邮件地址?

JWS*_*JWS 11 facebook user-accounts meteor

我创建了一个允许用户使用Facebook登录的Meteor应用程序.为此,我使用accounts-ui和accounts-facebook软件包.这很好用.

如何在用户登录后检索用户的电子邮件地址?我知道这需要特殊许可,所以我email在Facebook开发者网站的应用程序设置中添加了"用户和朋友的权限".按照Meteor文档,我也设置Account.ui.config如下:

Accounts.ui.config({
  requestPermissions: {
    facebook: ['email'],
  },
  passwordSignupFields: 'USERNAME_AND_EMAIL'
});
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,当我的应用程序的用户使用Facebook登录时,它正确地要求他们共享他们的电子邮件地址.但是我该如何检索呢?用户文档只有_idprofile.name.

JWS*_*JWS 9

Facebook用户的电子邮件地址存储在[userDocument].services.facebook.email客户端,但不能发布到客户端,但可以使用Meteor.methods和从服务器或客户端访问Meteor.call.

  • 您可以使用例如在服务器上发布电子邮件字段.`Meteor.publish("facebook_email",function(){return Meteor.users.find({_ id:this.userId},{fields:{'services.facebook.email':1}});});`,注意只向该用户发布用户的电子邮件以防止隐私问题. (2认同)