java - Spring Facebook 模板将 fetchObject 映射到 PagedList

标签 java spring spring-social kotlin spring-social-facebook

我使用以下方法返回 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,则无需在 Kotlin 中发布示例代码 - 我很乐意提供任何语言的信息)

最佳答案

Facebook API 在请求中使用“fields”参数来返回对象的自定义字段。该参数也可用于喜欢的音乐休息请求。



    me/music?fields=id,genre,name

上面的链接将返回所有喜欢的音乐以及艺术家/团体的 ID、流派和名称。不幸的是 FacebookTemplate 没有适合您需求的方法。方法Facebook.likeOperations()返回 LikeTemplate 的实例具有常量 PAGE_FIELDS 且值为

的类


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

在上面的常量中,您没有流派字段。所以你有两种方法:

  1. 您可以简单地使用 facebook Rest api 和一些 Rest 库
  2. 您可以覆盖 FacebookTemplate 并返回您自己的 LikeTemplate 实现作为 likeOperations() 方法的结果。 LikeTemplate 类的实现应该在提到的常量中具有不同的值(在字符串末尾添加流派字段)

也许有些人会更有帮助,但据我所知,您没有其他选择。

关于java - Spring Facebook 模板将 fetchObject 映射到 PagedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325739/

相关文章:

Java构造函数: creating an object,短参数被解释为int

java - 未定义的构造函数(java)

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'email' in 'where clause'

java - 启动 Tomcat 时 Web 模块没有从核心模块中找到类

java - Spring-data-couchbase - 运行更新查询

spring-social - Linkedin "Scope"未设置变量

java - Java中如何将数组的内容输出到文本文件中?

java - 如何更改 NetBeans 中 JFrame 和 JLabel 之间的空间?

java - 使用社交配置连接注册 :jdbc-connection-repository element in spring social

java - 为什么 Spring Social Authentication 是 NULL?