Как получить идентификатор электронной почты зарегистрированного пользователя - Meteor?
Я развернул приложение под meteor.com, в которое можно войти через социальные сети. Аккаунты Meteor, аккаунты в Facebook, аккаунты в Twitter, используемые пакеты Google.
Но это приложение Meteor не возвращает идентификатор электронной почты зарегистрированного пользователя после публикации "электронных писем".
Мы использовали для получения идентификатора электронной почты вошедшего в систему пользователя со следующим кодом, но теперь он не работает.
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);
}
})
но эта функция возвращает "неопределенный"
Пожалуйста помоги
1 ответ
Вы можете использовать этот пакет meteor add splendido:accounts-emails-field
https://atmospherejs.com/splendido/accounts-emails-field
Это пакет Meteor, который поддерживает поле массива register_emails внутри объекта пользователя в соответствии с любой электронной почтой службы учетной записи, используемой пользователем для входа в приложение.
поэтому, когда вы используете этот пакет, не имеет значения, как пользователь зарегистрировался, вы всегда будете иметь его также на 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 [];
};
});