Я должен реализовать способ загрузки видео с нашего сайта на youtube. Я уже зарегистрировал приложение в Google Cloud и получил все необходимые идентификаторы клиента, секретный код клиента, ключ браузера, перенаправление uri и ключа сервера. Я также включил API данных Youtube Data V3, API Google+, API Freebase и API YouTube Analytics, как это было предложено различными сайтами.
Вот мой код ниже:
require_once 'google-api-php-client/src/Google_Client.php'; require_once 'google-api-php-client/src/contrib/Google_YouTubeService.php'; $client = new Google_Client(); $client->setApplicationName('Application Name'); $client->setClientId('CLIENT_ID'); $client->setClientSecret('CLIENT_SECRET_CODE'); $client->setRedirectUri('REDIRECT_URI'); $client->setDeveloperKey('DEVELOPER_KEY'); $youtube = new Google_YouTubeService($client); if (isset($_GET['code'])) { $client->authenticate(); $_SESSION['token'] = $client->getAccessToken(); $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); } if (isset($_SESSION['token'])){ $client->setAccessToken($_SESSION['token']); } if ($client->getAccessToken()){ $path_to_video_to_upload = $_FILES["video"]["tmp_name"]; $mime_type = $_FILES["video"]["type"]; $snippet = new Google_VideoSnippet(); $snippet->setTitle('Highlights'); $snippet->setDescription('Description Of Video'); $snippet->setTags(array('training', 'Soccer')); $snippet->setCategoryId(17); $status = new Google_VideoStatus(); $status->privacyStatus = "private"; $video = new Google_Video(); $video->setSnippet($snippet); $video->setStatus($status); try { $obj = $youtube->videos->insert("status,snippet", $video, array("data"=>file_get_contents($path_to_video_to_upload), "mimeType" => $mime_type)); } catch(Google_ServiceException $e) { print "Caught Google service Exception ".$e->getCode(). " message is ".$e->getMessage()." <br>"; } $_SESSION['token'] = $client->getAccessToken(); } else{ $authUrl = $client->createAuthUrl(); print "<a href='$authUrl'>Connect Me!</a>"; }
Я ссылался на эти коды: Загружать видео на Youtube с помощью Youtube API V3 и PHP
а также
http://www.dreu.info/blog/uploading-a-video-to-youtube-through-api-version-3-in-php/
Первый раз, когда я запускал этот код, мне приходилось подключаться к учетной записи youtube (с помощью экрана, чтобы позволить google управлять моей учетной записью YT), а затем во второй попытке я получил ответ 401 Message.
Вот ответ с сервера YouTube
Попавшее в Google сообщение об ошибке «Исключение 401» – это ошибка при вызове POST https://www.googleapis.com/upload/youtube/v3/videos?part=status%2Csnippet&uploadType=multipart&key=AIzaSyCCySI5cToH3sICTmhCEFHW7QkIDptsjXg : (401) Неавторизованный
Я пытался найти различные решения, но бесполезно, я не могу найти его. Любая помощь приветствуется, спасибо!
Последующий вопрос: Является ли ключ разработчика ключом браузера или ключом сервера? Я смущен тем, что я должен использовать в своем коде. Я пробовал переключать ключи, и он тоже не работал.
У меня была точно такая же проблема.
Проверьте свою учетную запись youtube. У вас есть канал? Если вы этого не сделаете, вы не сможете добавлять видео (через API или даже в YouTube).
После создания канала в YouTube он работал. нет необходимости в новом коде или новых ключах.
Для тех, кто сталкивается с проблемой Access Not Configured. Please use Google Developers Console to activate the API for your project
Access Not Configured. Please use Google Developers Console to activate the API for your project
,
код от @ justine1234 работает отлично. Просто удалите
$client->setDeveloperKey('DEVELOPER_KEY');
и запустите его.
Большое спасибо за код @ justine1234.
С уважением