You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP Graph SDK设置Facebook视频过期参数遇#100错误求助

解决Facebook Graph API设置视频过期日期的#100错误

我之前也踩过这个坑,Graph API v2.11对expiration参数的格式要求是嵌套关联数组,而不是单独传字符串日期或者分开传递expiration_type。你当前的写法把expiration设为字符串、expiration_type作为独立参数,完全不符合API的参数结构要求,这就是返回#100格式错误的原因。

正确的参数结构

你需要把过期时间和过期类型合并到expiration这个嵌套数组里,具体结构如下:

$params = [
    // 其他视频参数...
    'expiration' => [
        'time' => '2018-02-04T23:57:00+0100', // 支持ISO 8601格式或Unix时间戳
        'type' => 'hide' // 可选值:hide(隐藏视频)/ delete(删除视频)
    ]
];

修改后的完整代码示例

调整你的参数结构后,完整代码应该是这样的:

$this->handle = new \Facebook\Facebook([
    'app_id' => 'xxx',
    'app_secret' => 'xxx',
    'default_graph_version' => 'v2.11',
    'default_access_token' => $session
]);

$params = [
    'title' => 'videoname',
    'name' => 'videoname',
    'content_category' => 'ENTERTAINMENT',
    'description' => 'some description text',
    'embeddable' => 1,
    'file_size' => 29089069,
    'thumb' => new \Facebook\FileUpload\FacebookFile('7SQNP1186922FBPx2.jpg'),
    'secret' => '',
    'published' => '',
    'no_story' => '',
    'unpublished_content_type' => 'SCHEDULED',
    'scheduled_publish_time' => 1517400300,
    'expiration' => [
        'time' => '2018-02-04T23:57:00+0100',
        'type' => 'hide'
    ]
];

$this->handle->post('/' . $fbpageID . '/videos', $params, $token);

关键注意事项

  • expiration必须是包含time和type的数组,不能拆分传递expiration_type参数
  • time支持两种格式:ISO 8601标准字符串(如2018-02-04T22:57:00Z的UTC格式更稳妥)或Unix时间戳,两种格式API都能识别
  • 确保你的访问令牌拥有足够权限(如pages_manage_posts、publish_video),虽然你的错误是格式问题,但权限不足也可能引发类似报错

内容的提问来源于stack exchange,提问作者Rito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:51:56