5

我使用了以下代码。如果没有“scheduled_publish_time”,它可以正常工作,否则我会收到此错误“(#100)您无法在已发布的帖子上指定预定的发布时间”。我之前用另一段代码注册了我的应用程序。太奇怪了。

include_once("inc/facebook.php"); //include facebook SDK

$appId = '21xxxxxxxxxxx'; //Facebook App ID
$appSecret = '6b8f4bxxxxxxxxxxxxxd56'; // Facebook App Secret
$return_url = 'http://localhost:8888/...';  //return url (url to script)
$homeurl = 'http://localhost:8888/...'; //return to home
$fbPermissions = 'publish_stream,manage_pages';  //Required facebook permissions

//Call Facebook API
$facebook = new Facebook(array(
  'appId'  => $appId,
  'secret' => $appSecret,
  'cookie' => true,
  'fileUpload' => true
));

    $accounts = $facebook->api('/me/accounts');
$PAGE_ID = get_option('fb_post_cron_page'); // it is an option saved in WordPress

foreach($accounts['data'] as $account){
  if($account['id'] == $PAGE_ID){
    $ACCESS_TOKEN = $account['access_token'];
    }
}

$post_url = '/'.$PAGE_ID.'/photos';
$upload_dir = wp_upload_dir(); 
$upload_dir= $upload_dir['path'];


$timezone= 'Europe/Rome';
$date = new DateTime($dateStr, new DateTimeZone($timezone));

//posts message on page statues 
$args = array(
    'access_token' => $ACCESS_TOKEN,
    'source' => '@' . $image_abs_path,
    'message' => $post_message,
    'published' => true,
    'scheduled_publish_time' => $date->getTimestamp()
);

try {
    $postResult = $facebook->api($post_url, 'post', $args );
} catch (FacebookApiException $e) {
    echo $e->getMessage();
}
4

1 回答 1

8

您必须将“已发布”设置为 false

$args = array(
    'access_token' => $ACCESS_TOKEN,
    'source' => '@' . $image_abs_path,
    'message' => $post_message,
    'published' => false,
    'scheduled_publish_time' => $date->getTimestamp()
);
于 2013-07-08T09:22:33.753 回答