更新发布错误InvalidVideMetadata -YouTube V3 API PHP



我使用youtube API在YouTube上更新视频。问题是当我想更新视频发布状态时,我从YouTube遇到了此错误。

[2017-11-29 12:19:39] local.ERROR: Google_Service_Exception: {
 "error": {
  "errors": [
   {
    "domain": "youtube.video",
    "reason": "invalidVideoMetadata",
    "message": "The request metadata is invalid.",
    "locationType": "other",
    "location": "body"
   }
  ],
  "code": 400,
  "message": "The request metadata is invalid."
 }
}

,但奇怪的是,仅当我设置发布值时,我才会出现错误(IVE将私密性更新为"私有")。如果发布为null,则更新过程成功。

$params     = array();
$part       = 'snippet,contentDetails,player,status'; 
$properties = [
    'snippet.categoryId'            => $this->video->youtube_category_id,
    'snippet.defaultLanguage'       => '',
    'snippet.description'           => $this->video->video_description,
    'snippet.tags[]'                => !empty($this->video->tags->pluck('tag_value')->toArray())?implode(',',$this->video->tags->pluck('tag_value')->toArray()):'',
    'snippet.title'                 => $this->video->video_title,
    'status.embeddable'             => true,
    'status.license'                => '',
    'status.privacyStatus'          => !empty($this->video->privacy_status) ? $this->video->privacy_status : 'private',
    'status.publishAt'		    => empty($this->video->video_release_date) ? "" : date('Y-m-dTH:i:s.sP',strtotime($this->video->video_release_date)),
    'status.publicStatsViewable'    => ''
];
if(!empty($this->video->youtube_id)){
  $properties['id'] = $this->video->youtube_id;
}
$service    = new Google_Service_YouTube($client);
$propertyObject = $this->createResource($properties);
$resource = new Google_Service_YouTube_Video($propertyObject);
if($this->upload) $client->setDefer(true);
if(!empty($this->video->youtube_id))
{
  $request = $service->videos->update($part, $resource, $params);
}
elseif($this->upload) 
{
  $request = $service->videos->insert($part, $resource, $params);
}
else
{
   exit;
}

ive搜索Internet有关此问题,但没有找到任何解决方案。请帮助谢谢。

注意:使用此代码,上传视频成功。

我的研究以下是可能导致错误的可能性 -

  • status.publishAt属性只能设置视频的隐私状态是私有的,视频从未发布过

  • 设置status.publishAt太近当前时间。尝试60分钟。参考

以下直接来自upplistiedat的文档

预定发布视频的日期和时间。仅当视频的隐私状态是私有的。 该值是在> iso 8601(yyyy-mm-ddthh:mm:mm:ss.sz)中指定的值。请注意以下有关此属性行为的其他两个点:

  1. 如果在调用 videos.update 方法时设置此属性的值已经是私人的。

  2. 如果您的请求计划在过去的某个时候发布视频,则该视频将立即发布。因此,设置状态的效果。公开属性与过去的日期和时间相同,与将视频的私密性从私人更改为公共。

相关内容

  • 没有找到相关文章

最新更新