我需要将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]
);
答案 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']);