使用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
相关产品推荐
相关产品推荐

