【问题标题】:Facebook Graph API: How to filter home & feed by application?Facebook Graph API:如何按应用程序过滤主页和提要?
【发布时间】:2011-10-27 01:15:46
【问题描述】:

Facebook Graph API 可让您获取主页(新闻提要)和提要(墙)的 JSON 表示。

如何获取我的 Facebook 应用发布的帖子?

【问题讨论】:

    标签: facebook facebook-graph-api


    【解决方案1】:

    Facebook 通过传递 filter 参数增加了对过滤 me/home 帖子的支持,而无需使用 FQL。

    例如,仅获取照片,您可以执行以下操作: me/home?filter=app_2305272732

    完整文档在这里:http://developers.facebook.com/docs/reference/api/user/#home

    【讨论】:

    • 这实际上是正确的答案 - 执行 FQL stream_filter 查询的可靠性/结果更少(由于各种 FB 原因,哈哈)比在路径中使用过滤器拉图。
    • 我在此答案中给出的链接中看不到与 filter 参数有关的任何内容。这是错误的链接吗?
    【解决方案2】:

    您现在可以使用Facebook Graph API(基本网址:https://graph.facebook.com)运行Facebook Query Language (FQL) 查询。

    假设您的应用程序是 Twitter。 Twitter 的 Facebook 应用程序 ID 是 2231777543。

    我在@danontheline's answer 的帮助下并仔细阅读了 Facebook 在FQL streamFQL stream_filter 上的文档,得出了下面的 FQL 查询。

    以下摘录特别中肯:

    如果您从stream_filter FQL 表中指定filter_key 或 多个用户,返回的结果将表现得像用户的主页 新闻提要。如果只指定一个用户作为 source_id,您将 接收用户或页面的个人资料视图。你可以过滤这些 通过指定 filter_key 'others' (仅返回 由指定用户以外的人发布的帖子)或“所有者” (仅返回指定用户发布的帖子)。个人资料视图, 与主页视图不同,它从我们的数据库返回旧数据。在 对于主页,个人资料视图还包括粉丝的帖子。

    您的 Facebook 动态消息中的 Twitter 推文

    GET /fql?q=SELECT post_id, actor_id, message, app_id, attribution FROM stream WHERE filter_key = 'app_2231777543'
    

    您的 Facebook 墙上的 Twitter 推文

    GET /fql?q=SELECT post_id, actor_id, message, app_id, attribution FROM stream WHERE source_id = me() AND app_id = '2231777543' LIMIT 1000
    

    使用Facebook Graph API Explorer 运行这些查询会返回Facebook Graph API post 对象(结果集将根据access_token、隐私等而有所不同)。您可以通过将流表的其他列添加到上述查询和/或简单地向 GET /{post_id} 为上述 FQL 流查询返回的每个 post_id 发出另一个 Graph API 请求来了解有关每个帖子的更多信息。

    【讨论】:

    • Version 2.0 of the Facebook Platform API is the last version where FQL will be available. Versions after 2.0 will not support FQL.
    【解决方案3】:

    Afaik 这是不可能的,just Graph API。但是您也可以只使用FQL 语句来检索墙/提要。使用这种技术,您可以将其限制为由一个 actor_id(在这种情况下应该是您的应用 ID)发布的帖子:

    SELECT post_id, target_id, message FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0 AND actor_id = 'MattDiPasqualesAppID'
    

    这里的事情是它不会返回 JSON,而是返回结果的 XML 表示。使用 phps DOM class 您可以轻松地将其转换为 JSON 格式或您想要的任何其他结果表示形式!

    由于您可能正在使用 PHP 处理整个事情,您也可以只获取 json 数组,将其解析为一个数组并使用您的 appID 的键过滤该数组。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    相关资源
    最近更新 更多