2013-10-17 138 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 
    )); 

感謝您的幫助!

相關問題