Facebook Graph NodeJS API
を使用してuser_posts
を取得しています。応答はページネーションを持っているので、すべての投稿を取得するために応答をループする必要があります。私はFacebookの投稿を取得するために、次のルートを使用していると私はget_user_statuses
機能を使用して改ページをループしています:応答オブジェクトが関数に渡されたときに定義されていません
var posts = "";
function get_user_statuses(response_posts, res) {
var link_regex = /https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,}/g;
var isNextPageAvailable = true;
if ("paging" in response_posts) {
var nextPage = response_posts.paging.next;
isNextPageAvailable = true;
} else {
isNextPageAvailable = false;
}
for (var i = 0; i < response_posts.data.length; i++) {
var post = response_posts.data[i].message + " ";
if ("message" in response_posts.data[i]) {
posts += post.replace(link_regex, "");
}
}
if (nextPage !== undefined) {
request(nextPage, function (error, response, body) {
if (!error && response.statusCode === 200) {
get_user_statuses(JSON.parse(body));
} else {
console.log(error);
}
});
}
if (!isNextPageAvailable){
//Sending posts to facebook Modal
console.log(posts);
res.send(JSON.stringify({posts: posts})); //res is not defined here
}
}
router.post('/fbData', function (req, response, next) {
FB.setAccessToken(req.body.access_token);
FB.api('/me?fields=posts&posts.limit=1000', function (res) {
if (!res || res.error) {
if (!res) {
response.send(JSON.stringify({error: 'An error occurred. Please try again.'}))
}
response.send(JSON.stringify({error: response.error}));
return;
}
get_user_statuses(res.posts, response); //Passing response object here
});
});
問題は明示route
から渡されたresponse
オブジェクトがget_user_statuses
機能で定義されていないということです。今私は2つの質問があります:
- なぜ応答オブジェクトが定義されていませんか?
- この配置を達成するためのより良いアプローチがありますか?
お返事ありがとうございます。私は私の答えに記載されたリンクを使用して私の目的を達成するよりエレガントな方法を見つけた。 –