1

我正在尝试从本地主机连接到谷歌 API,但继续收到异常(密钥已更改 - 在下面的文本中)。

Warning: file_get_contents(compress.zlib://https://www.googleapis.com/books/v1/volumes?q=Henry+David+Thoreau&filter=free-ebooks&key=bItatTTTTT7amAHYSaROTTTTTbtttuuuuuuuu) [function.file-get-contents]: failed to open stream: operation failed in C:\zendProject\zf2\vendor\google\apiclient\src\Google\IO\Stream.php on line 115

我在浏览器中使用的代码直接来自 API 指南,内容如下:

$client = new \Google_Client(); 
$client->setApplicationName("rent");
$service = new \Google_Service_Books($client);
$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);

我认为我的问题与配置文件有关,而事实上我正在使用 localhost 开发服务器。

'Google_Auth_OAuth2' => array(
      'application_name' => 'www.example.com',
       'client_id' => '4498xxxxx061-3333xxxx9pjcpkbqhoxxxxxxxxxxx.apps.googleusercontent.com',
       'client_secret' => '8xxxxxxxxx333xxxxxxxxx',
       'redirect_uri' => 'http://localhost',
       'developer_key' => 'AxxxxxxzBjpxxxxxaxxxxxxZxxx1xxxxx',

在新的开发者控制台中,我为项目创建了一个新的客户端 ID,并插入了“Client_id”、“Client_secret”等。

我还为日历和书籍启用了相关的 API。

我已经在我为谷歌字体找到的 URL 上测试了我的 API 密钥——所以我确信我有正确的开发者密钥。

我怀疑问题可能出在 uri 字段中的本地主机周围,我需要在这里输入什么?

有谁知道我做错了什么。

更新:我发现了一篇建议在此处获取 HTTP 响应代码的帖子:

服务器的响应是 304 - 不确定这是否有帮助

更新: @Carlos Rubles - 是正确的,我使用了不正确的版本。以防万一其他人遇到这个问题 - 谷歌网站上的作曲家信息似乎不正确。

我之前使用过 "google/apiclient": "1.0. " 这出现在 google 文档中。我现在已经尝试过 "google/apiclient": "1. " 这似乎已经解决了这个问题。

4

1 回答 1

0

那是file_get_contentsapi的问题。大多数人将 file_get_contents 更改为CURL以访问远程文件。无论如何,我正在检查库,但在所有 stream.php 文件中都找不到对 file_get_contents 的任何调用

https://github.com/google/google-api-php-client/blob/master/src/Google/IO/Stream.php

第 115 行,我们有一个注释行,所以我想到的是 yu 没有使用该库的最新版本。另外,我看到在这个版本中他们使用 fopen. 所以你可以尝试更新它,这可能会解决问题

于 2014-02-08T11:06:15.317 回答