Как получить идентификатор электронной почты зарегистрированного пользователя - 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 [];
  };
});
Другие вопросы по тегам