我不确定你想做什么,但对于我从事的一个项目,我需要从 YouTube 获取特定的播放列表,并将内容公开给网站的访问者。
我所做的是一种代理。我设置了一个包含 api 密钥的 php 文件,然后让最终用户通过这个 php 文件获取 YT 内容。
php 文件使用 curl 获取 YT 格式的内容。
希望对你有帮助。
编辑 1
隐藏密钥的方法是将其放在服务器上的 PHP 文件中。
这个 PHP 文件将连接到 youtube 并在您的客户端页面上检索您想要的数据。
此代码示例,使用正确的 api 密钥和正确的播放列表 id 将获得一个包含播放列表前 10 个曲目的 json 文件。
$resp 将包含 json 数据。要提取它,必须将其解码为例如关联数组。一旦进入数组,它就可以很容易地混合到将在客户端浏览器上呈现的 html 中。
<?php
$apiKey = "AIza...";
$results = "10";
$playList = "PL0WeB6UKDIHRyXXXXXXXXXX...";
$request = "https://www.googleapis.com/youtube/v3/playlistItems?part=id,contentDetails,snippet&maxResults=" . $results .
"&fields=items(contentDetails%2FvideoId%2Cid%2Csnippet(position%2CpublishedAt%2Cthumbnails%2Fdefault%2Ctitle))" .
"&playlistId=" . $playList .
"&key=" . $apiKey;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $request,
CURLOPT_SSL_VERIFYPEER => false
));
$resp = curl_exec($curl);
if (curl_errno($curl)) {
$status = "CURL_ERROR";
}else{
// check the HTTP status code of the request
$resultStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($resultStatus == 200) {
$status = "OK";
//Do something with the $resp which is in JSON format.
//Like decoding it into an associative array
} else {
$status = "YT_ERROR";
}
}
curl_close($curl);
?>
<html>
<!-- your html here -->
</html>
注意:CURLOPT_SSL_VERIFYPEER 设置为 false。这正在开发中。对于 prod 来说应该是真的。
另请注意,以这种方式使用 api,您可以限制对您的 api 密钥的调用,将它们绑定到您的域。您可以在 googla api 控制台中执行此操作。 (制作提示)