Meteor访问令牌

5
使用新的身份验证系统 authentication,在使用 Meteor 时,当使用 accounts-facebook 包登录时,如何获取 Facebook 的 访问令牌
2个回答

17

可以从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;

你救了我们的一天(实际上是几天)。谢谢! - zVictor

6

更新并简化Lloyd的答案,得到以下结果:

服务器


内容涉及IT技术。
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 访问访问令牌(如果存在)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接