2015-11-06 243 views
0

我刚刚升级到图形api 2.5和PHP SDK 5.0,它似乎是你的页面通知已经改变的方式。Facebook图形API - 获取页面通知

在过去,我可以打电话:

/{PAGE_ID} /通知

,并得到这样的回应:

{ 
    "id": "notif_12345_12345", 
    "from": { 
    "name": "John Doe", 
    "id": "12345" 
    }, 
    "to": { 
    "name": "Page Name", 
    "category": "Community", 
    "id": "12345" 
    }, 
    "created_time": "2015-11-01T16:23:38+0000", 
    "updated_time": "2015-11-01T18:10:26+0000", 
    "title": "John Doe and Jane Doe commented on a link you shared.", 
    "link": "http://www.facebook.com/page/posts/12345?comment_id=12345" 
} 

完美,正是我想要的。但在2.5我刚刚得到:

{ 
    "data": [ 
    { 
     "to": { 
     "name": "Page Name", 
     "id": "12345" 
     }, 
     "id": "notif_12345_12345" 
    }, 
    { 
     "to": { 
     "name": "Page Name", 
     "id": "12345" 
     }, 
     "id": "notif_12345_67890" 
    } 
} 

而我不知道该怎么办呢?我试着做一个请求:

/notif_12345_67890

,但它只是返回相同的信息。

有没有办法在图表api中获取通知的详细信息?

为了完整起见,这里是我用PHP做的事情,虽然响应也可以在图形浏览器中测试。

$sdk = new \Facebook\Facebook([ 
    'app_id' => $app_id, 
    'app_secret' => $app_secret, 
    'default_graph_version' => 'v2.5', 
]); 

$response = $sdk->get($page_id.'/notifications', $access_token); 

$graphEdge = $response->getGraphEdge(); 

// Iterate over all the GraphNode's returned from the edge 
foreach ($graphEdge as $graphNode) { 
    var_dump($graphNode); 
} 

回答

1

自V2.4,你必须指定你想获得返回的字段:

/{page_id}/notifications?fields=name,title,link 

这是一个比较复杂一点与子文档,但我相信这应该工作:

/{page_id}/notifications?fields=name,title,link,to{name,category} 

“声明性领域”是什么,是:https://developers.facebook.com/docs/apps/changelog#v2_4

+0

你是对的,解决它。有没有办法看到有哪些可能的领域?通常情况下,图表浏览器允许您在左侧输入一个字段,但不能输入通知 – robjbrain

+1

api参考告诉您确切的字段:https://developers.facebook.com/docs/graph-api/reference – luschn

+0

干杯,被文档弄糊涂了,现在很合理 – robjbrain