2012-09-24 79 views

回答

16

得到它无论是从Meteor.method:

// server 
Meteor.methods({ 
    getAccessToken : function() { 
    try { 
     return Meteor.user().services.facebook.accessToken; 
    } catch(e) { 
     return null; 
    } 
    } 
}); 

// client 
Meteor.call("getAccessToken", function(error, accessToken){ 
    console.log(accessToken); 
}) 

或发布:

//server 
Meteor.publish("currentUserAccessToken", function(){ 
    var self = this; 
    if (this.userId()){ 
     handle = Meteor.users.find(this.userId()).observe({ 
      added: function(user){ 
       self.set("currentUserAccessToken", user._id, {value: user.services.facebook.accessToken}); 
       self.flush(); 
      }, 
      changed: function(user){ 
       self.set("currentUserAccessToken", user._id, {value: user.services.facebook.accessToken}); 
       self.flush(); 
      } 
     }); 

     this.onStop(function() { 
      handle.stop(); 
     }); 
    } 
}); 

//client 
var AccessToken = new Meteor.Collection("currentUserAccessToken"); 
Meteor.subscribe("currentUserAccessToken"); 

//access the value 
var accessToken = AccessToken.findOne().value; 
+0

你化险为夷(实际上,数天)访问(存在时)。谢谢! – zVictor

6

更新和简化Lloyd's answer,我们得到这样的:

服务器

Meteor.publish("currentAccessToken", function(){ 
    return Meteor.users.find(this.userId, {fields: {'services.facebook.accessToken': 1}}); 
}); 

客户

Meteor.autosubscribe(function(){ 
    var newUser = Meteor.user(); 
    Meteor.subscribe('currentAccessToken'); 
}); 

它更新每个用户状态改变的时间,访问令牌可以通过Meteor.user().services.facebook.accessToken