2013-10-17 219 views
1

我试图将一个事件添加到页面名称中的页面。我是该页面的管理员,但发现了很多关于该主题的内容,但无论我做什么,它都以PHP异常结束:为什么我不能将事件添加为页面?

未捕获异常:您必须是指定的页面执行请求的操作。

我可以用我的应用程序在我自己的配置文件中添加事件。所以,我认为问题是访问令牌。我试了几种方法,但对我来说最好的办法似乎是:

  1. 开放图形API浏览器
  2. 选择我的应用
  3. 请求的权限manage_pages,publish_actions,publish_stream,create_event
  4. 新的接入代码
  5. 请求/ ME /占
  6. 获取从页面我想张贴和在我的脚本中使用它的access_token

我的测试脚本,适用于我自己的配置文件:

require 'src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => $APPLICATION_ID, 
    'secret' => $APPLICATION_SECRET, 
    'cookie'  => false, 
    'fileUpload' => true 
)); 

$event_id = 0; 
$event_name = "New Event API Test Event"; 
$event_start = '2013-12-04'; 
$event_privacy = "OPEN"; 

$ret_obj = $facebook->api('/'.$page_id.'/events?access_token='.$access_token, 'POST', 
array(
    'name' => $event_name, 
    'start_time' => $event_start, 
    'privacy_type' => $event_privacy, 
    'location_id' => $location_id 
)); 

if(isset($ret_obj['id'])) { 
    echo 'Event with added. ID: ' . $ret_obj['id']; 
} else { 
    echo 'Couldn\'t create event'; 
} 

我做错了什么?

+0

那么'$ access_token'来自哪个代码?你有[调试它](https://developers.facebook.com/tools/debug),看看它实际上是一个有效的访问令牌的页面? – CBroe

+0

@CBroe对不起,$ access_token和其他使用的变量位于代码之上。我使用https://developers.facebook.com/tools/debug验证了代码,它是vali。配置文件ID与我的测试代码中的$ page_id相同。 – Andy

回答

1

您需要一个页面访问令牌。

页面访问令牌 - 这些访问令牌类似于用户访问令牌 ,但他们提供权限的API,读,写 或修改属于一个Facebook页面的数据。要获取页面 访问令牌,您需要首先获取用户访问令牌并要求manage_pages权限。一旦用户访问令牌,您就可以通过Graph API获取页面访问令牌。

文件:https://developers.facebook.com/docs/facebook-login/access-tokens/

然后用GET /me/accounts获得相关的到你的页面的访问令牌。

0

我在How to programmatically add an event to a page using Graph API?找到了解决方案。我不得不将Access_token直接添加到事件数组中,并且一切按预期工作:

$ret_obj = $facebook->api('/'.$page_id.'/events', 'POST', 
     array(
     'access_token' => $access_token, 
     'name' => $event_name, 
     'start_time' => $event_start, 
     'privacy_type' => $event_privacy, 
     'location_id' => $location_id 
    )); 

感谢您的帮助!

相关问题