我正在使用流星/反应来学习Facebook图形api。 我想访问用户在Facebook时间轴上的信息,并将其显示在屏幕上。怎么办?
根据此处[How to perform common FB actions using Meteor?提供的解决方案的指导。我尝试了以下代码:server.js
Meteor.methods({
'seePost' : function(){
var graph=Npm.require('fbgraph');
if(Meteor.user().services.facebook.accessToken){
graph.setAccessToken(Meteor.user().services.facebook.accessToken);
var future = new Future();
var onComplete = future.resolver();
graph.get('/me/feed',function(err,result) {
console.log(result);
return onComplete(err,result);
})
Future.wait(future);
}
else{
return false;
}
}
});
客户端代码:
Meteor.call("seePost", function(err,result) {
if(err) console.log("error" , err);
else console.log("RES", result);
});
我希望在客户端控制台中显示结果,因为我想向用户显示其时间轴上的帖子,但是我得到以下输出: RES,未定义
答案 0 :(得分:1)
您可以使用await
和Meteor.callAsync
基本上,客户端代码等待调用完成,并为您提供返回的数据
const result = await Meteor.callAsync("seePost");
错误应使用try..catch块进行处理
答案 1 :(得分:1)
如果使用光纤/期货,则需要返回带有“期货”的东西。
const future = new Future();
// some code getting result or something
future.return(something);
return future.wait();
这将在客户端调用的回调中返回某些内容。
答案 2 :(得分:1)
尝试此代码,当您使用光纤时,您需要“等待”响应
Meteor.methods({
'seePost': function () {
var graph = Npm.require('fbgraph');
if (Meteor.user().services.facebook.accessToken) {
graph.setAccessToken(Meteor.user().services.facebook.accessToken);
var future = new Future();
var onComplete = future.resolver();
graph.get('/me/feed', function (err, result) {
console.log(result);
if (err) {
return future.return(false);
} else {
return future.return(result);
}
})
return future.wait();
}
return false;
}
});