Upload de vídeo para o Youtube usando a API de dados do YouTube V3 e o cliente da API do Google PHP - recebendo uma mensagem 401 (não autorizada)
Eu tenho que implementar uma maneira de enviar vídeos do nosso site para o youtube. Já registrei o aplicativo no Google Cloud e obtive todo o ID de cliente, código secreto do cliente, chave do navegador, redirecionamento uri e chave do servidor. Também ativei a API de dados do YouTube V3, a API do Google+, a API do Freebase e a API do YouTube Analytics, sugeridos por vários sites.
Aqui está o meu código abaixo:
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>";
}
Eu estava referenciando esses códigos de:Upload de vídeo para o Youtube usando Youtube API V3 e PHP
e
http://www.dreu.info/blog/uploading-a-video-to-youtube-through-api-version-3-in-php/
Primeira vez que eu corri este código, ele tinha me conectar à conta do youtube (com uma tela pedindo para deixar o google gerenciar minha conta do YT) e, em seguida, na segunda tentativa, eu tenho essa resposta 401 Mensagem.
Aqui está a resposta do servidor do youtube
O serviço do Google chamado Mensagem de exceção 401 está com erro ao chamar POSThttps://www.googleapis.com/upload/youtube/v3/videos?part=status%2Csnippet&uploadType=multipart&key=AIzaSyCCySI5cToH3sICTmhCEFHW7QkIDptsjXg: (401 não autorizado
Eu tentei procurar várias soluções, mas em vão eu não consigo encontrá-lo. Qualquer ajuda é apreciada, obrigado!
pergunta de acompanhamento: A chave de desenvolvedor é a chave do navegador ou a chave do servidor? Estou confuso quanto ao que devo usar no meu código. Eu tentei mudar as chaves e também não funcionou.