为什么我不能将事件添加为页面?

时间:2013-10-17 10:11:42

标签: php facebook facebook-graph-api facebook-php-sdk

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

  

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

我可以在自己的个人资料中添加我的应用中的活动。所以,我认为问题是访问令牌。我试过几种方法,但对我来说最好的方法似乎是:

  1. 打开Graph API Explorer
  2. 选择我的申请
  3. 请求具有权限manage_pages,publish_actions,publish_stream,create_event
  4. 的新访问代码
  5. 要求/我/帐户
  6. 从我要发布的页面获取access_token并在我的脚本中使用
  7. 我的测试脚本,适用于我自己的个人资料:

    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';
    }
    

    我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要页面访问令牌。

  

页面访问令牌 - 这些访问令牌与用户访问类似   令牌,除了它们为读取,写入的API提供权限   或修改属于Facebook页面的数据。获取页面   您需要通过获取用户访问令牌来启动访问令牌   要求 manage_pages权限。一旦您拥有用户访问权限   然后,您可以通过图谱API获取页面访问令牌。

     

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

然后使用GET /me/accounts获取与您的网页相关联的访问令牌。

答案 1 :(得分: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
     ));

感谢您的帮助!