Я добавил пакет meteorhacks:npm и установил fbgraph, используя:
$ npm install fbgraph
Мой код на стороне сервера сейчас выглядит так:
function Facebook(accessToken) {
this.fb = Meteor.npmRequire('fbgraph');
this.accessToken = accessToken;
this.fb.setAccessToken(this.accessToken);
this.options = {
timeout: 3000,
pool: {maxSockets: Infinity},
headers: {connection: "keep-alive"}
}
this.fb.setOptions(this.options);
}
Facebook.prototype.query = function(query, method) {
var self = this;
var method = (typeof method === 'undefined') ? 'get' : method;
var data = Meteor.sync(function(done) {
self.fb[method](query, function(err, res) {
done(null, res);
});
});
return data.result;
}
Facebook.prototype.getUserData = function() {
return this.query('me');
}
Facebook.prototype.getFriendsData = function() {
return this.query('/me/friendlists');
}
Meteor.methods({
getUserData: function() {
var fb = new Facebook(Meteor.user().services.facebook.accessToken);
var data = fb.getUserData();
return data;
},
getFriendsData: function() {
var fb = new Facebook(Meteor.user().services.facebook.accessToken);
var data = fb.getFriendsData();
return data;
}
});
Meteor.publish("getUserData", function () {
return Meteor.users.find({_id: this.userId});
});
Meteor.publish("getFriendsData", function(){
return Meteor.users.find({_id: this.userId});
});
Мой config.js тоже в порядке, я думаю:
Accounts.ui.config({
passwordSignupFields: "USERNAME_ONLY",
requestPermissions: {
facebook: ['email', 'user_friends'],
}
});
На стороне клиента у меня есть шаблон:
<template name="friends">
<div class="container">
{{friendlist}}
</div>
</template>
И я пытаюсь вызвать getFriendsList с помощью:
Template.friends.helpers({
friendlist: function() {
Meteor.call("getFriendsData");
}
});
Наконец, мой package.json выглядит так:
{
"fbgraph": "1.1.0"
}
Когда я пытаюсь запустить свое приложение, я получаю следующее сообщение об ошибке:
Exception while simulating the effect of invoking 'getFriendsData
TypeError: Meteor.npmRequire is not a function
Прошу прощения, если это глупый вопрос, я новичок в Meteor. И я для жизни меня не могу понять это. Я был бы очень признателен за помощь.