我在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”
请帮忙
答案 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 [];
};
});