【问题标题】:YouTube API v3 call works in browser, fails in codeYouTube API v3 调用在浏览器中工作,代码失败
【发布时间】:2016-02-13 16:33:56
【问题描述】:

我正在尝试从 PHP 调用 YouTube API v3 以获取视频的时长。我有我的开发人员密钥,并根据 Google 的文档和 SO 上的许多其他帖子组装了似乎是有效的 URL:

https://www.googleapis.com/youtube/v3/videos?id=rpVJkH7dWsY&part=contentDetails&key={myDeveloperKey}

我可以在浏览器中输入这个 url,然后返回一大堆正确的东西。但是当我通过 file_get_contents($the_url) 从 PHP 调用它时,它会失败并出现“连接超时”错误。

我一定是做错了某事;有什么建议吗?谢谢!

【问题讨论】:

  • 好的,我真的不认为这是一个答案/解决方案,但我发现我可以成功调用此 API 并使用 cURL 而不是 file_get_contents 检索正确的数据。也许 curl 方法看起来更像是对 YT 的浏览器调用,因此偷偷通过了一些验证/测试?不知道;建议仍将不胜感激!

标签: php youtube youtube-api youtube-data-api


【解决方案1】:

我用file_get_contents($the_url) 做的和你描述的完全一样,它对我来说很好用。如果它在浏览器中但不能在您的服务器上工作,我唯一能想到的就是确保您使用的是不同的 API 密钥,即服务器密钥,您将使用浏览器密钥从您的浏览器进行测试,大概。如果这不是问题,我想不出任何其他不应该工作的明显原因。

【讨论】:

  • 奇怪/谢谢。但是“浏览器密钥”和“服务器密钥”有什么区别?我在 console.developers.google.com 上制作了我的密钥,但在那里只看到了一种密钥(我认为?)——我遵循了半明显的路径:创建了一个项目,创建了一个密钥,分配了一些 API,等等。是否还有其他事情或某种事情要做?
  • 我不完全理解为什么必须有不同的种类,只是它们似乎将它们分解为您在浏览器中运行的查询的键(在客户端),以及从服务器代码运行的查询。您的一般过程似乎很好,只是当您单击 Create Credentials、Create a New Key 时,有 4 个选项:服务器、浏览器、Android 和 iOS。根据我的经验,您可能需要一个服务器密钥和一个浏览器密钥。那么你的JS代码和其他浏览器查询可以使用浏览器一,你的php或者其他服务器代码可以使用服务器代码。
  • (1) 原来我制作的密钥是服务器密钥,所以我仍然很困惑(尽管有你的帮助:)。 (2) 服务器密钥和浏览器密钥的区别似乎是服务器密钥可以将地址列入白名单,而浏览器密钥可以将引荐来源/网站列入白名单。无论如何,我似乎处于一些奇怪的角落情况,但我有一些工作,所以我宣布胜利并继续前进......谢谢!
猜你喜欢
  • 2018-07-26
  • 2019-07-23
  • 2016-05-03
  • 2015-08-05
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
相关资源
最近更新 更多