1

我有一个简单的 PHP 组件,可以从 YouTube 上的公共播放列表中获取视频。我正在使用 Google 的官方 PHP SDK 并使用服务器密钥进行身份验证(因为我只需要访问公共数据,而不是用户上下文中的数据)。

在整个开发和登台阶段,该组件运行良好。但是,我已将应用程序移动到客户端的生产服务器(GoDaddy 托管帐户)并且组件突然停止工作,而是引发以下错误:

REST.php 第 83 行中的 Google_Service_Exception:调用 GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PLAYLIST_ID&userIp=SERVER_IP&key=DEVELOPER_KEY时出错:(403)有一个 per-IP 或 per - 在您的 API 密钥上配置的引用限制,并且请求与这些限制不匹配。如果应允许来自此 IP 或引用者的请求,请使用 Google Developers Console 更新您的 API 密钥配置。

我不明白。服务器的 IP 地址在 Google API 控制台中列入白名单。我知道这是正确的 IP 地址,因为我已经从服务器向另一个 PHP 脚本发送了 HTTP POST 请求并捕获了REMOTE_ADDR服务器变量。

我还尝试在请求本身中指定 IP 地址。完整代码:

$client = new Google_Client;
$client->setApplicationName($appName);
$client->setDeveloperKey($developerKey);

$service = new Google_Service_YouTube($client);

$service->playlistItems->listPlaylistItems('snippet', array(
    'maxResults' => 50,
    'playlistId' => $collectionId,
    'userIp' => $serverIp,
));

那么怎么回事?为什么谷歌决定它不与生产服务器打球?

4

0 回答 0