2

我正在查询 Google API 以使用 ruby​​ 的 Google API 官方 gem 列出驱动器中的所有文件。我正在使用 Google 开发者页面中给出的示例 - https://developers.google.com/drive/v2/reference/files/list

我提出的第一个请求在“项目”中返回一个红宝石“哈希”数组。下一个请求在“项目”中返回“Google::APIClient::Schema::Drive::V2::File”或“Google::APIClient::Schema::Drive::V2::ParentReference”数组(每种类型背后的原因也困扰着我)。

有谁知道为什么会这样?在“files.list”的参考页面上,没有提到改变结果的类型。

def self.retrieve_all_files(client)
  drive = client.discovered_api('drive', 'v2')
  result = Array.new
  page_token = nil
  begin
    parameters = {}
    if page_token.to_s != ''
      parameters['pageToken'] = page_token
    end
    api_result = client.execute(
        :api_method => drive.files.list,
        :parameters => parameters)
    if api_result.status == 200
      files = api_result.data
      result.concat(files.items)
      page_token = files.next_page_token
    else
      puts "An error occurred: #{result.data['error']['message']}"
      page_token = nil
    end
  end while page_token.to_s != ''
  result
end

编辑:

我还不能解决这个问题,但我设法更好地理解它:

当第一次向 API 发出请求时,在用户授权后,“file.list”会返回 File 资源的“Items”属性的 Hashes 数组。每个 Hashes 就像一个 File 资源,具有 File 的所有属性,只是访问的类型不同。例如:文件的标题可以这样访问“File['title']”。

在发出第一个请求后,所有后续请求都会返回一个文件资源数组,可以像“File.title”这样访问。

4

1 回答 1

0

仅供参考,这是客户端库中的错误。使用最新版本应该可以解决它。

于 2013-08-12T22:41:28.370 回答