我必须实施一种将视频从我们的网站上传到youtube的方法。我已经在Google Cloud中注册了该应用,并获得了所有必需的客户端ID,客户端密码,浏览器密钥,重定向uri和服务器密钥。我也确实打开了各个网站提供的Youtube Data API V3,Google+ API,Freebase API和YouTube Analytics API。
以下是我的代码:
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>";
}
我引用了以下代码: Upload video to Youtube using Youtube API V3 and PHP
和
http://www.dreu.info/blog/uploading-a-video-to-youtube-through-api-version-3-in-php/
我第一次运行此代码时,它让我连接到youtube帐户(屏幕要求让google管理我的YT帐户)然后在第二次尝试时,我收到了此401消息响应。
以下是来自youtube服务器的响应
抓取Google服务异常401消息是错误调用POST https://www.googleapis.com/upload/youtube/v3/videos?part=status%2Csnippet&uploadType=multipart&key=AIzaSyCCySI5cToH3sICTmhCEFHW7QkIDptsjXg :( 401)未经授权
我试图寻找各种解决方案,但无济于事我似乎无法找到它。 感谢任何帮助,谢谢!
后续问题:开发人员是否键入浏览器密钥或服务器密钥?我很困惑,我应该在我的代码中使用哪个。我尝试过切换按键,但也无法正常工作。
答案 0 :(得分:0)
我遇到了同样的问题。
检查您的YouTube帐户。你有创建频道吗?如果你不能,你将无法添加视频(通过API甚至在youtube中)。
在youtube中创建频道后,它有效。不需要新代码或新密钥。
答案 1 :(得分:0)
对于那些遇到Access Not Configured. Please use Google Developers Console to activate the API for your project
,
$client->setDeveloperKey('DEVELOPER_KEY');
并运行它。
非常感谢代码@ justine1234。
此致