更新时间:2023-11-27 21:56:28
我只为您使用"kinda解决方法",因为无论如何我都会在服务器上操纵和缓存响应数据.因此,我只调用方法并使用该服务器端.
I am using only "kinda workaround" for you, cause I would be manipulating and caching respond data on the server anyway. So I just call methods and use that server side.
Facebook = (accessToken) ->
@fb = Meteor.npmRequire 'fbgraph'
@accessToken = accessToken
@fb.setAccessToken @accessToken
@options =
timeout: 3000
pool:
maxSockets: Infinity
headers:
connection: "keep-alive"
@fb.setOptions @options
FBQuery = (query, method, fbObject) ->
if typeof method is 'undefined' then method = 'get'
console.log "query is: " + query
data = Meteor.sync((done) ->
fbObject[method](query, (err, res) ->
done(null, res)
)
)
data.result
Meteor.methods(
getUserData: ->
fb = new Facebook(Meteor.user().services.facebook.accessToken)
FBQuery '/me', 'get', fb
getUserEvents: ->
fb = new Facebook(Meteor.user().services.facebook.accessToken)
FBQuery '/' + Meteor.user().services.facebook.id + '/events', 'get', fb
getUserGroups: ->
fb = new Facebook(Meteor.user().services.facebook.accessToken)
FBQuery '/' + Meteor.user().services.facebook.id + '/groups?fields=name&limit=1000', 'get', fb
)
和客户端
Template.home.events(
'click #btn-user-data': (e) ->
Meteor.call('getUserData', (err, data) ->
$('#result').text(JSON.stringify(data, undefined, 4))
)
)