从Facebook活动发布获取活动ID

时间:2014-01-04 15:22:40

标签: php facebook facebook-graph-api

我有一个我正在尝试编写的应用,用户可以在其中查看已上传到活动墙上的照片。我已经设法写了一个PHP脚本,它给了我照片和他们的URL,但我看不到如何获取照片被发布的事件ID(这样每张图片都可以与事件的日期相关联)因此,只有在用户点击日历时才会显示相应的内容。

$event_id_name = 'actor_id'; //changed each attempt to something from the Facebook 'stream' table

$fql = array(
    "permsQuery"=>"SELECT user_events, create_event FROM permissions WHERE uid = me()",
    "query1"=>"SELECT eid FROM event_member WHERE uid = me()",
    "query2"=>"SELECT name,start_time, eid FROM event WHERE eid IN (SELECT eid FROM #query1)",
    "query3"=> 'SELECT attachment, '.$event_id_name.' FROM stream WHERE source_id IN (SELECT eid FROM #query1)',
    "userQuery"=>"SELECT first_name FROM user WHERE uid = me()",
);

$ret_obj = $facebook->api(array('method' => 'fql.multiquery',
 'access_token' => $access_token,
 'scope' => $required_permissions,
 'queries' => $fql,
));

//get the index of the query in the returned sets
//Yes, I'm sure there's an easier way of doing this! :)
$x = 0;
while ($x < count($ret_obj))
{
 if ($ret_obj[$x]['name'] == 'query3') {$returnedPostIndex = $x;}
 $x++;
}

//for debugging, just throw out the array elements in an relatively easy format
$x = 0;
while ($x < count($ret_obj[$returnedPostIndex][$results_set]))
{
 print_r ($ret_obj[$returnedPostIndex][$results_set][$x][$event_id_name]);
 print_r (' : ');
 print_r (count($ret_obj[$returnedPostIndex][$results_set][$x]['attachment']['media']));
 print_r (', ');
 $x++;
}

因此,使用上面的代码,我在我的网页上获得了一行文本,其中包含列内容,然后是针对用户的所有事件的每个帖子上传的照片数。问题是我希望

$ret_obj[$returnedPostIndex][$results_set][$x][$event_id_name]

将返回事件ID,但我似乎根本没有。结果(查看actor_id列时)是:

694382034 : 8, 694382034 : 2, 694382034 : 1, 694382034 : 1,

正确地说,在4个帖子中共发布了12张照片,但我知道它们分布在2个事件中,所以很明显,actor_id不是事件的ID。

阅读this我希望'actor_id'为

  

发布帖子的用户,页面,组或事件的ID

我假设我从完全错误的方向接近这个但现在被卡住了,那么有人可以告诉我如何访问个人照片的相关活动ID吗?

1 个答案:

答案 0 :(得分:0)

所以我最终从一个不同的角度接近:我只是拿出事件的eid并存储它们然后懒惰地获取分配给那些eid的图片。