Youtube数据API拒绝我的服务器端请求

时间:2015-01-15 17:14:27

标签: heroku google-api youtube-api youtube-data-api

我正在开发一个使用来自服务器的Youtube Data API的应用程序(带有node.js),所以我已经设置了我的服务器端凭证密钥,但是当我尝试获取数据时总是拒绝我的请求这条消息。

Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration.

我在Heroku中使用附加的Quote Guard Static托管我的应用程序,它为我提供了两个静态IP,我已在Google开发者控制台的凭据部分列入白名单。我还有一个托管在modulus.io中的应用程序,并将IP范围54.0.0.0/8列入白名单,这是他们为我们的AWS区域提供的......两个部署中的任何一个都只能在我的本地计算机上使用我的家庭外部IP白名单

有趣的是,在我将54.0.0.0/8范围列入白名单后约15分钟,应用程序API开始在我的Heroku主机上运行,​​但今天又停止了(这可能是因为它已经改为另一个IP内部他们的AWS区域或其他东西......)。

有没有办法检查IP对Youtube数据api的请求是什么?我可以在开发人员控制台中看到到达API的请求并被拒绝为"错误"至少我知道他们正在收到请求......

任何想法??

由于

修改 部分解决了。请参阅下面的答案。

2 个答案:

答案 0 :(得分:1)

我发现了一项简单的服务,可以返回您的公共IP:

http://api.ipify.org?format=json

您可以添加一个可以从浏览器点击的应用程序路径。然后,路由处理程序向此服务发出请求并返回结果。然后,您可以定期检查应用的实际公共IP是什么,并相应地调整白名单。

// Example express + request
app.get('/ip', function(req, res) {
  request({ uri: 'http://api.ipify.org?format=json' }, function(err, response, body) {
    res.send(body);
  });
});

答案 1 :(得分:0)

现在解决了Modulus.io中托管的应用程序的问题。该应用程序默认在Joyent服务器中运行,但我将其更改为亚马逊AWS区域,并且IP范围为54.0.0.0/8白名单谷歌正在接受我对API的所有请求。

尽管如此,heroku中的应用程序仍无法正常工作,但正如在一项服务中工作一样,我将停止在另一项服务中进行调查。