我正在尝试使用Google的API来使用YouTube供稿,并且我设法使其不受限制地使用API密钥。问题是,这使我容易受到“配额盗窃”的影响,因此我需要使用“ HTTP引荐来源网址”限制来限制我的密钥(如Google所推荐)。
我尝试在API控制面板中添加以下所有内容作为“网站限制”:
https://*.example.com/*
http://*.example.com/*
https://example.com/*
http://example.com/*
但是当我从“ example.com”拨打电话时,出现以下错误:
(403)该请求未指定任何引用。请确保客户端正在发送引荐来源或使用API控制台删除引荐来源限制。
如何在请求标头中传递引用值?
我正在使用直接来自API文档的代码示例:
require_once 'google-api-php-client/src/Google/autoload.php'; // or wherever autoload.php is located
$client = new Google_Client();
$client->setApplicationName('TESTING APP NAME');
$client->setDeveloperKey('AIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFg');
// Define service object for making API requests.
$service = new Google_Service_YouTube($client);
$queryParams = [
'part' => 'snippet',
'id' => 'UCQ3f82p5yb6MiA9O1LZbmEA',
'maxResults' => 10
];
$response = $service->channels->listChannels('id,snippet,contentDetails,statistics', $queryParams);
有人可以告诉我如何通过请求传递参照值吗?
像我8岁一样向我解释。 ;)非常感谢!
答案 0 :(得分:2)
就像你8岁...
您要告诉妈妈(YouTube)爸爸(您的网站)需要信息。
发出请求时,您需要明确说出以及谁在询问信息。
我在使用相同的代码时遇到了麻烦,因此决定使用curl来包含CURLOPT_REFERER
。
<?php
$videoId = 'oHg5SJYRHA0';
$apikey = 'INSERT KEY HERE';
$googleApiUrl = 'https://www.googleapis.com/youtube/v3/videos?id=' . $videoId . '&key=' . $apikey . '&part=snippet';
$HitIt = curl_init();
curl_setopt($HitIt, CURLOPT_REFERER, 'INSERT YOUR URL HERE');
curl_setopt($HitIt, CURLOPT_HEADER, 0);
curl_setopt($HitIt, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($HitIt, CURLOPT_URL, $googleApiUrl);
curl_setopt($HitIt, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($HitIt, CURLOPT_VERBOSE, 0);
curl_setopt($HitIt, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($HitIt);
curl_close($HitIt);
$data = json_decode($response);
$value = json_decode(json_encode($data), true);
$title = $value['items'][0]['snippet']['title'];
$description = $value['items'][0]['snippet']['description'];
?>
<h2><?php echo $title; ?></h2>
<p><u>Description</u>: <?php echo $description; ?></p>