我如何知道Facebook状态/照片/链接是否为私有?

时间:2014-03-30 18:07:37

标签: facebook facebook-graph-api facebook-php-sdk

当我从facebook API获取状态/链接/照片时,我如何知道它是否已与公众共享或是否是私人帖子?

另外 - 有没有办法只查询公开帖子?

我目前正在使用/<username>/status /<username>/links /<username>/photos个终结点。

1 个答案:

答案 0 :(得分:0)

使用图形api

在您使用的3个端点中,只有一个端点允许您访问/<username>/links的隐私设置。它返回一个隐私对象,如下所示:

{
  "id": "USER_FB_ID", 
  "links": {
    "data": [
      {
        "id": "ID_OF_THE_POST", 
        "from": {
          "name": "Fábio Antunes", 
          "id": "USER_FB_ID"
        }, 
        "message": "Check this awesome link", 
        "privacy": {
          "description": "Friends; Except: Restricted", 
          "value": "ALL_FRIENDS", 
          "allow": "", 
          "deny": "", 
          "networks": "", 
          "friends": ""
        },
(etc....) 

使用FQL

要解决您的问题,您可以使用 FQL ,这样您就可以获得具有公共访问权限的3个端点。

对于链接,您可以使用此查询:

Select link_id,owner_comment, title, url, privacy FROM link WHERE owner = me() AND privacy.value='EVERYONE'

注意:检查link table,看看是否有任何字段可能要添加到此查询中

由于来自3个端点的链接表是唯一具有隐私设置结构以获取公开的用户照片和状态,因此您必须使用privacy table

为了让所有用户公开拍照,我做了2次加入,首先我收到用户的照片,然后我想要所有人都可以使用的照片的隐私设置,然后我选择有隐私的照片设置公开:

SELECT caption,src_big FROM photo WHERE object_id IN (SELECT id FROM privacy WHERE value='EVERYONE' AND object_id IN (SELECT object_id FROM photo WHERE owner=me()))

注意:检查photo table,看看是否有任何字段可能要添加到此查询中

为了获得公共状态,它与照片的过程相同,有两个连接:

SELECT status_id , message, place_id  FROM status WHERE status_id IN (SELECT id FROM privacy WHERE value='EVERYONE' AND object_id IN (SELECT status_id FROM status WHERE uid=me()))

注意:检查status table,看看是否有任何字段可能要添加到此查询中