如何使用PHP SDK和Graph API在Facebook粉丝页上发布活动?

5
以下代码可以工作,但它会将事件创建为当前登录的页面管理员。我需要将其发布到粉丝页面本身。FYI:我的应用程序已被授予权限范围:manage_pages
<?php

// Initialize a Facebook instance from the PHP SDK
$config = array(
  'appId' => FACEBOOK_APP_ID,
  'secret' => FACEBOOK_APP_SECRET,
  'cookie' => false,
  'scope' => 'manage_pages,create_event'
);

$facebook = new Facebook($config);

$access_token = $facebook->getAccessToken();

$page_id = 'XXXXXXXXXXXX';

// Now, getting the PAGE Access token, using the user access token

$page_token_url = "https://graph.facebook.com/$page_id?fields=access_token&" . $access_token;
$response = file_get_contents($page_token_url);

// Parse the return value and get the Page access token
$resp_obj = json_decode($response,true);

$page_access_token = $resp_obj['access_token'];

// Declare the variables we'll use to demonstrate
// the new event-management APIs
$event_id = 0;
$event_name = "New Event API Test Event";
$event_start = time() + rand(1, 100) * rand(24, 64) * 3600;
$event_privacy = "SECRET"; // We'll make it secret so we don't annoy folks.

// We'll create an event in this example.
// We'll need create_event permission for this.
$params = array(
  'name' => $event_name,
  'start_time' => $event_start,
  'privacy_type' => $event_privacy,
  'access_token' => $page_access_token,
  'page_id' => $page_id //where $page_id is the ID of the page you are managing
);

// Create an event
$ret_obj = $facebook->api("/$page_id/events", 'POST', $params);
if(isset($ret_obj['id'])) {
  // Success
  $event_id = $ret_obj['id'];
  printMsg('Event ID: ' . $event_id);
} else {
  printMsg("Couldn't create event.");
}

// Convenience method to print simple pre-formatted text.
function printMsg($msg) {
   echo "<pre>$msg</pre>";
}

?>

2
我弄清楚了:我将参数 page_id 添加到 $params 列表中,并给它赋值 $page_id,然后它就能正常运行了!如果我能记得在接下来的几个小时内(由于我的信誉较低),我会发布修改后的代码以帮助其他人。无论如何,还是谢谢! - lincolnberryiii
这是上面修改后的代码吗?我现在真的需要一些帮助! :) - Jody Heavener
2
@JodyHeavener 我刚刚为你更新了它。 - lincolnberryiii
致命错误:未捕获的OAuthException:无效的OAuth访问令牌。抛出于/home/scott/public_html/facebook-php-sdk/src/base_facebook.php的第1340行。 - Scott Fleming
1个回答

1

这里是答案: Facebook PHP API, 发布事件在页面上

为了方便,以下是复制的内容:

我认为你需要页面访问令牌,以下是获取方法:

$page_id = "XXXXXXXXX";
$page_access_token = "";
$result = $facebook->api("/me/accounts");
foreach($result["data"] as $page) {
    if($page["id"] == $page_id) {
        $page_access_token = $page["access_token"];
        break;
    }
}

确保您授予manage_pages权限并将access_token添加到$event_info数组中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接