我有一个简单的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)您的API密钥上配置了每IP或每个Referer限制,并且请求与这些限制不匹配。如果允许来自此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,
));
那是怎么回事?为什么Google决定不与生产服务器合作?