从Facebook通知获取更多细节?

时间:2013-01-24 00:20:10

标签: facebook facebook-graph-api

我正在编写一个从用户Facebook通知中收集信息的应用程序。使用Graph Explorer,我请求:

me/notifications?include_read=true

这会返回一堆数据。每个项目都是您登录Facebook时会看到的通知项目。例如(ID /名称稍有改动):

{
  "id": "notif_630262196_168132987", 
  "from": {
    "name": "John Bloggs", 
    "id": "822724665"
  }, 
  "to": {
    "name": "Dermot Bloggs", 
    "id": "680265196"
  }, 
  "created_time": "2013-01-23T22:58:28+0000", 
  "updated_time": "2013-01-23T22:58:28+0000", 
  "title": "John Bloggs commented on your link: \"Goodbye Great Barrier Reef. Goodbye...\"", 
  "link": "http://www.facebook.com/<removed>/posts/330788937030559?comment_id=1702155", 
  "application": {
    "name": "Links", 
    "id": "2309869772"
  }, 
  "unread": 0, 
  "object": null
}

通知与评论有关,但如果标题太长,则“标题:”字段会被截断。

有没有一种干净的方式我可以直接以编程方式访问评论,所以我可以获取所有文本,即使它是1000个字符的注释?

谢谢! : - )

2 个答案:

答案 0 :(得分:2)

您应该可以通过解析link字段并查询来获取评论:

/330788937030559_1702155

/POSTID_COMMENTID

当我在我的帐户上对此进行测试时,我在返回的数据中获得了一个comments对象,其中包含注释的全文。我在Graph API中启用了大部分权限。我怀疑在权限中添加read_stream将为您提供此数据。

答案 1 :(得分:1)

你可以避免解析!我一直在做很多关于通知的实验,并得到我称之为“源”的对象(源对象是通知源自的Facebook图形对象)。遗憾的是,我找不到任何关于此机制的工作原理的文档,但是如果您的应用已被授予了大量权限,那么您发布的JSON中的"object"字段实际上将是null填充'源对象'。而不只是"object" : null它将如下所示:

"object": {
    "id": "587140489_588632201147717", 
    "from": {
      "name": "Dave Rodríguez", 
      "id": "587140489"
    }, 
    "message": ":D ", 
    "picture": "https://fbcdn-vthumb-a.akamaihd.net/hvthumb-ak-prn1/632550_478955408819349_478954732152750_60483_1892_t.jpg", 
    "link": "https://www.facebook.com/photo.php?v=478954732152750", 
    "source": "http://video.ak.fbcdn.net/hvideo-ak-prn1/v/754708_478955348819355_1792301950_n.mp4?oh=c7295ccfc3773f24de931e4c29f512ce&oe=513F1728&__gda__=1363127340_9302c108824176369427a0b17491b800", 
    "name": "¡¡¡EL SECRETO DE LA CHANCLA!!!!", 
    "description": "EL SECRETO DE LAS MADRES, EL MÁS UTILIZADO EN TODAS LAS GENERACIONES, VÉALO USTED MISMO Y ((COMPARTA))!", 
    "properties": [
      {
        "name": "Length", 
        "text": "1:13"
      }
    ], 
    "icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif", 
    "actions": [
      {
        "name": "Comment", 
        "link": "https://www.facebook.com/587140489/posts/588632201147717"
      }, 
      {
        "name": "Like", 
        "link": "https://www.facebook.com/587140489/posts/588632201147717"
      }
    ], 
    "privacy": {
      "value": ""
    }, 
    "type": "video", 
    "status_type": "shared_story", 
    "object_id": "478954732152750", 
    "application": {
      "name": "Video", 
      "namespace": "video", 
      "id": "2392950137"
    }, 
    "created_time": "2013-03-10T20:45:20+0000", 
    "updated_time": "2013-03-10T20:45:20+0000", 
    "likes": {
      "data": [
        {
          "name": "Adrian Guerra Cuenta Verificada", 
          "id": "674364748"
        }
      ], 
      "count": 1
    }, 
    "comments": {
      "count": 0
    }
  }

我希望比我更有知识的人可以准确地告诉我们填写此字段所需的权限。我自己弄清楚了,但有很多权限,强制SUM(nCk(77,k),k,1,77)=151115727451828646838271可能的权限组合需要很长时间。