如何获取登录用户的电子邮件ID - Meteor?

时间:2015-10-16 14:57:13

标签: email meteor accounts

我在meteor.com下部署了一个应用程序,可以使用社交媒体连接登录。 Meteor accounts-facebook accounts-twitter accounts-google packages used。

但是这个Meteor应用程序在发布“电子邮件”之后不会返回已登录用户的电子邮件ID。

我们曾经使用以下代码获取登录用户的电子邮件ID,但现在它无效。

Meteor.user().emails[0].address

我的应用中的代码:

服务器:

Meteor.publish(null, function() {
    return Meteor.users.find({_id: this.userId}, {fields: { emails: 1, profile: 1 } });
});

客户:

Template.layout.events({
    'click #checkUser':function(){
        var user = Meteor.user();
        var email = user && user.emails && user.emails[0].address

        alert(email);
    }
})

但此函数返回“undefined”

请帮忙

1 个答案:

答案 0 :(得分:0)

您可以使用此程序包meteor add splendido:accounts-emails-field https://atmospherejs.com/splendido/accounts-emails-field

  

这是一个维护registered_emails数组的Meteor包   用户对象内的字段与任何帐户服务电子邮件保持同步   用户用来登录应用程序。

因此,当您使用此软件包时,无论用户注册的方式如何,您都会在Meteor.user().registered_emails处始终注明该软件包,Meteor.user().registered_emails[0].address现在可以正常使用。

更新:您必须将此信息发布到客户端,您可以在下面执行此操作并在需要时将其订阅,或将user更改为null,它将自动为所有人发布。

Meteor.publish("user", function () {
  if (this.userId) {
    return Meteor.users.find({_id: this.userId}, {fields: {'registered_emails': 1}});
  } else {
    return [];
  };
});