我缺乏经验让我无法理解如何隐藏API密钥。对不起,我已经离开了网络开发15年,因为我专注于关系数据库,并且已经发生了很多变化。
我已阅读了大量文章,但并不了解如何利用这些文章。我想将我的YouTube API密钥放在服务器上,但让客户端能够在没有曝光的情况下使用它们。我不明白如何在我的服务器上设置API密钥(ISP提供)使客户端能够访问与项目相关的YouTube频道。有人可以向我解释一下吗?
答案 0 :(得分:1)
我不确定你想做什么,但对于我所从事的项目,我需要从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。这是在发展中。为了刺激它应该是真的。
另请注意,以这种方式使用api,您可以限制对api键的调用,将其绑定到您的域。你在googla api控制台中这样做。 (生产技巧)