使用FB Graph API为特定页面创建Facebook事件

时间:2010-10-11 13:04:55

标签: php facebook facebook-graph-api

我需要将CMS中的事件同步到Facebook特定页面。我正在尝试为我创建的页面创建一个事件,但仍然没有结果。我可以简单地创建与用户相关但不与页面相关的事件。代码使用Facebook PHP-SDK

$page_id = '31337';
$page = $facebook->api("/{$page_id}");
$event_data = array(
    'name'          => 'Event: ' . date("H:m:s"),
    'start_time'    => time() + 60*60,
    'end_time'      => time() + 60*60*2,
    'owner'         => $page
);
$post = $facebook->api("/{$page_id}/events", 'POST', $event_data);

执行此片段后,会创建事件,但正如我之前所说,它属于用户,但给定数据中的“所有者”是页面。我的应用有manage_pages,create_event和publish_stream权限。我缺少什么?

解决方案

"OLD REST API"文档中,我发现“新图谱API”仍然需要参数 page_id 。因此变量$ event_data应如下所示:

$event_data = array(
    'name'          => 'Event: ' . date("H:m:s"),
    'start_time'    => time() + 60*60,
    'end_time'      => time() + 60*60*2,
    'page_id'       => $page['id]
);

4 个答案:

答案 0 :(得分:3)

«如果应用程序具有该用户的活动会话密钥,则代表用户创建一个事件;否则它会代表应用程序创建一个事件。» - Source

这会回答你的问题吗?

答案 1 :(得分:1)

您需要传递托管页面的访问令牌,您可以从graph.facebook.com/me/account获取该访问令牌(当然,通过您的访问令牌获取您所使用的粉丝页面列表)。您将看到每个粉丝页面的访问令牌列表,使用这些令牌创建活动或发布到您的粉丝页面。

答案 2 :(得分:0)

有趣 - 我的经历恰恰相反。我尝试使用page_id参数创建事件并获得权限错误。删除了page_id,它工作正常。诀窍是使用应用程序访问令牌而不是用户访问令牌。

答案 3 :(得分:0)

在发布帖子之前将access_token设置为第一页。确保您的应用具有“manage_pages”权限才能使用此功能。

像这样:

$page = $fbApi->api('/'.<page_id>,'GET',array('fields'=> 'access_token'));
$fbApi->setAccessToken($page['access_token']);