0

次のコードを使用して、ユーザーがフィードに対して行ったすべての投稿を繰り返し処理しています。

        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                // the user is logged in and has authenticated your
                // app, and response.authResponse supplies
                // the user's ID, a valid access token, a signed
                // request, and the time the access token 
                // and signed request each expire

                var uid = response.authResponse.userID;
                var accessToken = response.authResponse.accessToken;

                var fbid = response.authResponse.userID;

                console.time('all posts');

                var url = '/me/feed?limit=100';
                var finished = false;
                var c = 0, totalLikes = 0;
                var timer = setInterval(function () {

                    if(url != '') {
                        console.log("Checking: " + url);
                        FB.api(url, function(response) {

                            //console.log("Got " + response.data.length + " items");

                            //c += response.data.length;

                            // calculate total likes
                            for(var k in response.data) {
                                c++;
                                if(response.data[k].from.id == fbid) {
                                    console.log(response.data[k]);

                                }

                            }

                            if(response.paging) {
                                var bits = response.paging.next.split('facebook.com');
                                url = bits[1];
                            } else { 
                                clearInterval(timer); 
                                console.log("Found a total of " + c + " items");
                                console.timeEnd('all posts')
                            }
                        });
                        url = '';
                    } else {
                         //console.log("Skipped iteration");
                    }
                }, 1000);

            } else if (response.status === 'not_authorized') {
                // the user is logged in to Facebook, 
                // but has not authenticated your app

                FB.login(function(response) {
                    if (response.authResponse) {
                        console.log('Welcome!  Fetching your information.... ');
                        FB.api('/me', function(response) {
                            console.log('Good to see you, ' + response.name + '.');
                        });
                    } else {
                        console.log('User cancelled login or did not fully authorize.');
                    }
                }, { scope: 'user_about_me,read_stream,user_status,user_photos,friends_about_me,user_checkins,friends_likes,user_actions.music' });

            } else {
                // the user isn't logged in to Facebook.
                console.log("not logged in");
            }   
        });

残念ながら、ページを繰り返し処理しているため、2011を貼り付けて更新が見つからないようです。最後のページで、2007年に別のユーザーのステータスについて行った2つのコメントが見つかります。文字通り何百ものステータス更新がありません。

私はこれを研究するために最後の3時間を費やしましたが、無駄になりました。私は3人の異なる人のアカウント(2011年以前にすべてのステータスの更新などがたくさんあります)で試しましたが、同じ問題があります...

4

1 に答える 1

0

指定した URL var url = '/me/feed?limit=100';は最初の 100 件のみを返します。制限を増やして、次のようにオフセットを使用することもできます。

var url = '/me/feed?limit=100&offset=101

関連する API ドキュメント: https://developers.facebook.com/docs/reference/api/

さらに検索すると、履歴に関してログに記録されたバグがいくつかあるようです。

https://developers.facebook.com/bugs/178108638946497?browse=search_4fabbf595050e1514377846

于 2012-05-09T12:49:43.153 に答える