2014-02-08 25 views
1

我一直在使用php来成功创建yt直播活动一段时间。因为我已经试过禁用嵌入我收到以下错误:为实时事件设置contentDetails的错误 - Youtube Live API v3

["Error calling POST https:\/\/www.googleapis.com\/youtube\/v3\/liveBroadcasts?part=snippet%2Cstatus: (400) contentDetails"] 

的代码如下:

      $client = new Google_Client(); 
          $client->setClientId($OAUTH2_CLIENT_ID); 
          $client->setClientSecret($OAUTH2_CLIENT_SECRET); 


          $client->refreshToken($tokens[0]['google_oauth_refresh_token']); 


          // Define an object that will be used to make all API requests. 
          $youtube = new Google_Service_YouTube($client); 



          // Check to ensure that the access token was successfully acquired. 
          if ($client->getAccessToken()) {  

              // die(); 


           // Create an object for the liveBroadcast resource's snippet. Specify values 
           // for the snippet's title, scheduled start time, and scheduled end time. 
           $broadcastSnippet = new Google_Service_YouTube_LiveBroadcastSnippet(); 
           $broadcastSnippet->setTitle($_POST['title']); 
           $broadcastSnippet->setDescription($_POST['description']); 
           $broadcastSnippet->setScheduledStartTime(date('c', strtotime($_POST['start_date']))); //'2034-01-30T00:00:00.000Z'); 
           $broadcastSnippet->setScheduledEndTime(date('c', strtotime($_POST['start_time']))); // '2034-01-31T00:00:00.000Z'); 

           $contentDetails = new Google_Service_YouTube_LiveBroadcastContentDetails(); 
           $contentDetails->setEnableEmbed(false); 
           // debug($contentDetails); 

           // Create an object for the liveBroadcast resource's status, and set the 
           // broadcast's status to "private". 
           $status = new Google_Service_YouTube_LiveBroadcastStatus(); 
           // $status->setPrivacyStatus('public'); 
           $status->setPrivacyStatus('private'); 
           // $status->setPrivacyStatus('unlisted'); 

           // Create the API request that inserts the liveBroadcast resource. 
           $broadcastInsert = new Google_Service_YouTube_LiveBroadcast(); 
           $broadcastInsert->setContentDetails($contentDetails); 
           $broadcastInsert->setSnippet($broadcastSnippet); 
           $broadcastInsert->setStatus($status); 
           $broadcastInsert->setKind('youtube#liveBroadcast'); 

           // Execute the request and return an object that contains information 
           // about the new broadcast. 
           $broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status', $broadcastInsert, array()); 

           // Create an object for the liveStream resource's snippet. Specify a value 
           // for the snippet's title. 
           $streamSnippet = new Google_Service_YouTube_LiveStreamSnippet(); 
           $streamSnippet->setTitle('Transcoder - '.$_POST['title']); 

           // Create an object for content distribution network details for the live 
           // stream and specify the stream's format and ingestion type. 
           $cdn = new Google_Service_YouTube_CdnSettings(); 
           $cdn->setFormat("720p"); 
           $cdn->setIngestionType('rtmp'); 

           // Create the API request that inserts the liveStream resource. 
           $streamInsert = new Google_Service_YouTube_LiveStream(); 
           $streamInsert->setSnippet($streamSnippet); 
           $streamInsert->setCdn($cdn); 
           $streamInsert->setKind('youtube#liveStream'); 

           // Execute the request and return an object that contains information 
           // about the new stream. 
           $streamsResponse = $youtube->liveStreams->insert('snippet,cdn', 
            $streamInsert, array()); 

           // debug($streamsResponse); 

           // Bind the broadcast to the live stream. 
           $bindBroadcastResponse = $youtube->liveBroadcasts->bind(
            $broadcastsResponse['id'],'id,contentDetails', 
            array(
             'streamId' => $streamsResponse['id'], 
            )); 

回答

2

在这一行:

$broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status', $broadcastInsert, array()); 

它应该是:

$broadcastsResponse = $youtube->liveBroadcasts->insert('snippet,status,contentDetails', $broadcastInsert, array()); 

您正在设置contentDet ails的嵌入式资产,但不包括在请求中。 如果您阅读错误,那就是抱怨。

相关问题