2015-09-02 4 views
0

Я пытаюсь получить идентификатор Facebook пользователя Meteor (который подписан через Facebook). Следующая строка дает мне неприятность:ТипError: Meteor.user (...). Services undefined

var userID = Meteor.user().services.facebook.id; 

В консоли это говорит

TypeError: Meteor.user(...).services is undefined 

В моем понимании это потому, что пользователь() услуги не инициализированы еще.. Я завернул код в if(Meteor.user()), чтобы подтвердить, что пользователь был инициализирован. Код запускается при нажатии кнопки, поэтому у него достаточно времени для запуска. Это началось, когда я удалил autopublish (хотя это могло быть несвязанным). Есть ли что-то дополнительное, что мне нужно сделать, чтобы оно работало без автоматической публикации?

ответ

4

решаемые его следующим:

Meteor.publish("getUserData", function() { 
    return Meteor.users.find({_id: this.userId}); 
}); 

и подписавшись на это. После заполнения этой подписки доступны все данные Meteor.user.services.

0

услуги ключ не включен по умолчанию в документ пользователя на клиенте, поскольку содержит сведения о безопасности. Вы можете получить его с помощью вызова метода или опубликовать его с сервера и подписаться на него.

+0

Какой метод вызова я использовал бы для его получения? – ahota

+0

Создайте серверный метод, который возвращает нужный вам ключ, затем вызовите его из клиента с помощью функции Meteor.call() ' –

Смежные вопросы