2010-10-11 75 views
8

我需要同步从我的CMS Facebook的特定页面事件的特定页面。我试图为我创建的页面创建一个事件,但仍然没有结果。我可以简单地创建与用户相关的事件,但不能创建页面。代码使用Facebook PHP-SDK创建的Facebook事件与FB图形API

$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

感谢队友!你刚刚帮助我! :) – 2011-10-20 09:31:54

回答

3

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

这是否回答你的问题?

+0

Thx回答,但实际上不是。当用户未登录时,会在应用页面创建事件。但不是在特定页面上,我有哪个ID。 – Pawka 2010-10-11 13:20:38

+4

但在给定的链接中,我找到了解决方案:“page_id参数可用于为组和页生成事件。”奇怪的是,“新图API”文档缺少关于“旧REST API”中描述的page_id参数的信息。 – Pawka 2010-10-11 13:27:04

+1

大呢:) Facebook的文档是远离体面的,因为你可能已经知道... – 2010-10-11 13:30:08

0

Interesting-我的经验是完全相反的。我试图用page_id参数创建事件,并得到一个权限错误。删除了page_id,它工作正常。诀窍是使用应用程序访问令牌而不是用户访问令牌。

+0

您必须设置权限,您的应用程序列表。 http://developers.facebook.com/docs/authentication/permissions'manage_pages'权限实际上就是你需要的。 – Pawka 2010-11-04 08:30:34

+0

不是这样的 - 我的页面是由我的应用程序创建的,而不是由用户创建的,因此不存在manage_pages权限。出于某种原因,指定page_id导致API调用失败,删除它使它正常工作。 – Alastair 2010-11-10 16:35:01

1

你需要通过管理页面,你可以从graph.facebook.com/me/account得到(当然通过你的访问令牌让你manace扇页的列表)的访问令牌。您会看到每个粉丝页面的访问令牌列表,用它们来创建活动或发布到粉丝页面。

0

使之前后的设置来的access_token一个页面。确保你的应用程序具有“manage_pages”权限才能运行。

像这样:

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