5

Meteorを新しい認証システムで使用する場合、パッケージでログに記録されたときにFacebookアクセストークンを取得するにはどうすればよいですか?accounts-facebook

4

2 に答える 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;
于 2012-09-29T22:15:24.577 に答える
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

于 2012-10-30T16:19:48.880 に答える