Ответ в - "Что происходит с Meteor и Fibers/bindEnvironment() ?" очень полезен, однако не может помочь мне решить мою проблему.
Вот что я делаю:
- Войти через гугл
- Вызов FunGoogle (пользователь) из Accounts.onCreateUser
код:
SocialFunGoogle = function (user) {
var config = Accounts.loginServiceConfiguration.findOne({service: 'google'});
var opts = {
consumerKey: config.clientId,
consumerSecret: config.secret,
token: user.services.google.accessToken,
refreshToken: user.services.google.refreshToken
};
var gcontacts = new GoogleContacts(opts);
gcontacts.refreshAccessToken(opts.refreshToken, function (err, accessToken) {
if (err && err != null) {
console.log('gcontact.refreshToken, ', err);
return false;
} else {
console.log('gcontact.access token success!');
gcontacts.token = accessToken;
}
});
var fn = Meteor.bindEnvironment(function () {
var Fiber = Meteor.require('fibers');
var Future = Meteor.require('fibers/future');
var future = new Future();
setTimeout(function () {
return future.return(
Fiber(function () {
gcontacts.getContacts(
function (err, contact) {
contact = [{
name: 'S Sharma',
email: '[email protected]',
photoUrl: 'https://www.google.com/m8/feeds/photos/media/procrazium%40gmail.com/adf456aaaabbnndaa',
mime_type: 'image/*'
}, {
name: 'A Kapil',
email: '[email protected]',
photoUrl: 'https://www.google.com/m8/feeds/photos/media/procrazium%40gmail.com/22aaaab555758bc37952',
mime_type: 'image/*'
}, {
name: 'A Kartik',
email: '[email protected]',
photoUrl: 'https://www.google.com/m8/feeds/photos/media/procrazium%40gmail.com/2f2aaa02aab00f7aa85a2',
mime_type: 'image/*'
}];
contact.map(function (c) {
SocialConnect.insert(c);
});
return contact;
});
}).run()
);
}, 500);
});
fn();
}
Когда я пытаюсь войти в систему, мой код выдает следующие ошибки.
Исключение при вызове метода «логин» TypeError: невозможно установить свойство «_meteor_dynamics» неопределенного
Ошибка: код Meteor всегда должен выполняться внутри волокна. Попробуйте обернуть обратные вызовы, которые вы передаете в библиотеки, отличные от Meteor, с помощью Meteor.bindEnvironment.
Не могли бы вы указать, что я делаю неправильно?