2

Facebook ユーザーの音楽設定を返すために、次のアプローチを使用しています。

//FIXME: Fetch results in a single operation
val likes = facebook.likeOperations().music
val artists = ArrayList<Artist>()
for (musicLiked in likes)
{
    val musicProfile = facebook.fetchObject(musicLiked.id, Page::class.java, "id", "name", "genre");
    artists.add(Artist(name = musicProfile.name, genre = musicProfile.genre))
}

ユーザーが好きなアーティストごとに追加のネットワーク操作があるため、上記のアプローチはスケーリングしません。

私は試した:

使ってみfacebook.likeOperations.musicましたが、これはジャンルを取りません。

質問:

facebook.fetchObjectを返すクエリで使用したいと思いますPagedList。これを行う方法?

(Java を好む場合、または Java に精通している場合は、Kotlin でサンプル コードを投稿する必要はありません。どの言語でも情報を提供していただければ幸いです)

4

2 に答える 2

1

@burovmarleyの回答で与えられたアドバイスのおかげで、ソースを調べて思いついた:

val music = facebook.fetchConnections(userPage.id, "music", Page::class.java,
            PagingParameters(25, 0, null, null).toMap(), "id,name,,genre")
for (musicLiked in music)
{
    println("likes: ${musicLiked.name}, genre: ${musicLiked.genre}")
}

これにより、Spring Social Facebook を変更されていない依存関係として使用でき、プル リクエストを発行する必要はありません。プル リクエストは、現時点ではキューの処理がかなり遅いようです。

于 2015-11-07T03:47:20.017 に答える
1

Facebook API は、リクエストで「fields」パラメータを使用して、オブジェクトのカスタム フィールドを返します。このパラメーターは、好きな音楽の残りのリクエストにも使用できます。



    me/music?fields=id,genre,name

上記のリンクは、アーティスト/グループの ID、ジャンル、名前を含むすべてのいいね! された音楽を返します。残念ながら、FacebookTemplate には、ニーズに適用されるメソッドがありません。メソッドFacebook.likeOperations()は、値を持つ定数 PAGE_FIELDS を持つLikeTemplateクラスのインスタンスを返します



    private static final String PAGE_FIELDS = "id,name,category,description,location,website,picture,phone,affiliation,company_overview,likes,checkins";

上記の定数には、ジャンル フィールドがありません。したがって、次の 2 つの方法があります。

  1. Facebookの残りのAPIをいくつかの残りのライブラリで簡単に使用できます
  2. FacebookTemplate をオーバーライドして、likeOperations() メソッドの結果としてLikeTemplateの独自の実装を返すことができます。LikeTemplate クラスの実装では、前述の定数に異なる値が必要です (文字列の末尾にジャンル フィールドが追加されます)。

たぶん、もっと役立つ人もいるでしょうが、私の知る限り、他の選択肢はありません。

于 2015-11-02T23:37:04.117 に答える