2015-10-16 117 views
0

我已经在meteor.com下部署了一个可以使用社交媒体连接登录的应用程序。流星帐户 - Facebook帐户 - Twitter帐户 - 谷歌软件包使用。如何获取登录用户的电子邮件ID - 流星?

但是,此流星应用程序在发布“电子邮件”后不会返回登录用户的电子邮件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); 
    } 
}) 

但该函数返回 “未定义”

请帮助

+0

你的settings.json中有什么? – Soren

+0

尚未进行任何 –

回答

0

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

这是一个流星包,它与用户所使用的任何帐户服务电子邮件 器登录到维护用户对象内部registered_emails阵列 领域最新应用。

所以,当你使用这个包并不重要用户如何注册,你将永远有它也在Meteor.user().registered_emailsMeteor.user().registered_emails[0].address现在应该工作。

更新:你将不得不发布这些信息,你可以做以下这一点,并在你需要它或更改usernull订阅它的客户端,它会自动发布给大家。

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

加入你所提到的包,并改变了我的代码 ' '点击#mobileuser':函数(){ \t \t变种USEREMAIL = Meteor.user()registered_emails [0]。地址; \t \t alert(userEmail); \t}' 但仍然结果是一样的。 ' –

+0

@MaheshBabu你可以注销后重新登录后添加此软件包?它的工作基于登录回调,我想你必须在客户端发布这些额外的信息,忘记了我会更新答案 –

相关问题