Facebook.getHome()について

152 views
Skip to first unread message

SR

unread,
Dec 9, 2012, 7:26:13 PM12/9/12
to facebo...@googlegroups.com
getHome()メソッドを利用して自分のニュースフィードを取得して表示するということをしているのですが、

実行する度に取得できる個数が違いました。この取得の数を安定させるにはどうすればよいのでしょうか。

また、特定の条件で特定の個数取得する(Twitter4jでいえばpagingのような)方法は無いでしょうか。

よろしくお願いします。

Ryuji Yamashita

unread,
Dec 9, 2012, 8:32:24 PM12/9/12
to facebo...@googlegroups.com
こんにちは

home API ですが、Facebook の仕様によるとデフォルトでは最新25件返すようです。
手元の環境では実行する度に取得件数が異なるということはないのですが、何か法則性のようなものはありますでしょうか?

で、特定件数を取得する方法ですが、
例えば5件ずつ取得する場合は、
ResponseList<Post> feed = facebook.getHome(new Reading().limit(5));
のように引数に Reading クラスに limit(5) したものを渡してください。

それをやったうえで、次のページを取りたい場合は、
Paging<Post> paging = feed.getPaging();
ResponseList<Post> page2 = facebook.fetchNext(paging);
というふうに ResponseList からとれる Paging オブジェクトを Facebook.fetchNext() に渡してください。
次の5件がとれるはずです。

お試しください。

2012年12月10日月曜日 9時26分13秒 UTC+9 SR:

SR

unread,
Dec 10, 2012, 3:09:49 AM12/10/12
to facebo...@googlegroups.com
Redingクラスを使って特定の個数を取得することはできました。

しかし、私の実行環境では最大4件までしか取得できず、4つ目を取得する場合としない場合があります。

4つ目の記事が個人の投稿なので投稿日時からの日付経過などによる原因などではないとは考えていますが、原因は不明なままです。

取得できているのは上から「友達がいいねしたFacebookページ」、「個人の投稿」、「友達がいいねしたFacebookページ」、「個人の投稿」となっています。

日付が関係ないのであれば4件以上は記事はあるので表示されてもいいはずなのですが・・・。

何かアドバイスがあればよろしくお願いします。

Ryuji Yamashita

unread,
Dec 10, 2012, 9:29:41 AM12/10/12
to facebo...@googlegroups.com
いくつか確認させてください。

1. そもそも4件以上あるはずなのに最大4件しか取得できないのでしょうか?
2. Facebookから返ってくるJSONの内容も3件だったり4件だったり不定でしょうか?
3. 実行環境は以下のいずれかに該当しているでしょうか?
 ・自分がつくったアプリで自分のニュースフィードを取得している
 ・read_stream パーミッションを与えている

よろしくお願いします。

2012年12月10日月曜日 17時09分49秒 UTC+9 SR:

SR

unread,
Dec 10, 2012, 11:14:46 AM12/10/12
to facebo...@googlegroups.com
丁寧にありがとうございます。

1について
自分のFacebookページのニュースフィードで「ハイライト」から「並び替え:最新の記事」に変更したところ、そのページで表示される「友達がいいねしたFacebookページ」、「個人の投稿」だけ取得されていることがわかりました。(その2種類で計4件になるので)getHome()で上記の部分だけ取得できるということなら理解できました。しかし、取得件数の安定はしておりません。

2について
コード例でもあるように ResponseList<Post> feed = facebook.getHome(); で取得してリストの長さ分だけループさせて取得してきたPostを表示しているので取得件数が安定してないのではと考えています。JSONの概念をいまいち理解しておらず、見当違いかもしれませんが、申し訳ありません。

3について
確かに自分の作ったアプリでニュースフィードを取得しています。
後、指摘された時はread_streamパーミッションを与えていなかったので、与えたトークンでも実行してみましたが結果は同じでした。

言葉たらずでうまく説明できおりませんが、他にありましたらよろしくおねがいします。

Ryuji Yamashita

unread,
Dec 10, 2012, 11:45:44 PM12/10/12
to facebo...@googlegroups.com
1について
そうですね。home APIではハイライトじゃない表示相当のデータが取れます。

2について
Facebookから返ってくるJSONデータを見ないと何とも言えないですね。
差し支えなければ、メール( roundrop at gmail.com )でもいいので、
・3件しかとれない場合
・4件とれる場合
の2パターンのログをください。
※facebook4j.properties で debug=true にするとログが出ます
※JSONの構造をいじらなければ見せたくない箇所はマスクしてもかまいません。件数が見たいだけなので。

3について
自分がつくったアプリで自分のニュースフィードを取得している場合は、read_streamは特に指定不要みたいなのでここは問題ないかと思います。

2012年12月11日火曜日 1時14分46秒 UTC+9 SR:

SR

unread,
Dec 11, 2012, 8:42:45 AM12/11/12
to facebo...@googlegroups.com
度々失礼します。

現在、getHome()による取得が安定しました。

facebook4j.properties の方にアクセストークン、パーミッションを正しく設定していなかったので修正

安定してしまったので安定してとれる場合のJSONデータしか取得できないのですが、送った方がよろしいでしょうか。

おそらく、設定の部分であいまいにしてしまったのが原因だったのではないかと思っております。

Ryuji Yamashita

unread,
Dec 11, 2012, 10:48:45 AM12/11/12
to facebo...@googlegroups.com
原因がスッキリしませんが、とりあえずよかったですね。
Facebook4Jのバグではなさそうなので送らなくても大丈夫です。

今後ともよろしくお願いします。

2012年12月11日火曜日 22時42分45秒 UTC+9 SR:
Reply all
Reply to author
Forward
0 new messages