I have tried uploading a video to YouTube channels using by the YouTube Data API, by composer:
"require": {"google/apiclient": "^2.7","hybridauth/hybridauth": "~3.4.0","guzzlehttp/guzzle": "^7.0" }
The video is uploaded successfully, but YouTube marks every video uploaded into it as private. Does anybody know how to fix this scenario?
public function upload_video_on_youtube($id, $arr_data) { $result_data = array(); $channel_id = $id; $uploaded = false; $stopper = 0; while ($uploaded == false && $stopper == 0) { $arr_data['summary'] = $this->getrandomstring(10); $arr_data['title'] = $this->getrandomstring(10); $client = new Google_Client(); $arr_token = $this->getAccessToken($channel_id); if ($arr_token['error'] == false) { $res = array(); $accessToken = array('access_token' => $arr_token['access_token'] ); $client->setAccessToken($accessToken); $service = new Google_Service_YouTube($client); $video = new Google_Service_YouTube_Video(); $videoSnippet = new Google_Service_YouTube_VideoSnippet(); $videoSnippet->setDescription($arr_data['summary']); $videoSnippet->setTitle($arr_data['title']); $video->setSnippet($videoSnippet); $videoStatus = new Google_Service_YouTube_VideoStatus(); $videoStatus->setPrivacyStatus('unlisted'); $video->setStatus($videoStatus); try { $response = $service->videos->insert('snippet,status', $video, array('data' => file_get_contents($arr_data['video_path']),'mimeType' => 'video/*','uploadType' => 'multipart' ) ); if (isset($response->id)) { $video_id = $response->id; $res['error'] = false; $res['response'] = $video_id; array_push($result_data, $res); $uploaded = true; return $result_data; } } catch (Exception $e) { if (401 == $e->getCode()) { // echo ($arr_token['email'] . " Youtube Access token expired"); $refresh_token = $this->get_refersh_token($channel_id); $client = new GuzzleHttp\Client(['base_uri' => 'https://accounts.google.com']); $response = $client->request('POST', '/o/oauth2/token', ['form_params' => ["grant_type" => "refresh_token","refresh_token" => $refresh_token,"client_id" => $arr_token['client_id'],"client_secret" => $arr_token['client_secret'], ], ]); $data = json_decode($response->getBody()); $data->refresh_token = $refresh_token; $this->update_access_token($channel_id, json_encode($data)); $uploaded = false; } elseif (403 == $e->getCode()) { // echo ($arr_token['email'] . ' Youtube channel quota exceeded'); $channel_id = $channel_id + 1; $uploaded = false; } } } else if ($arr_token['error'] == true) { $res['error'] = true; $res['response'] = "Your Daily Upload Quota is Exceeded"; array_push($result_data, $res); $stopper = 1; return $result_data; } } }