【问题标题】:Google Drive PHP Client Library Retrieve a list of File resourcesGoogle Drive PHP 客户端库检索文件资源列表
【发布时间】:2012-08-01 17:21:35
【问题描述】:

我尝试在我的代码中使用这个函数:https://developers.google.com/drive/v2/reference/files/list

在下面:

/**
 * Retrieve a list of File resources.
 *
 * @param apiDriveService $service Drive API service instance.
 * @return Array List of File resources.
 */
function retrieveAllFiles($service) {
  $result = array();
  $pageToken = NULL;

  do {
    try {
      $parameters = array();
      if ($pageToken) {
        $parameters['pageToken'] = $pageToken;
      }
      $files = $service->files->listFiles($parameters);

      array_merge($result, $files->getItems()); // <---- Exception is throw there !
      $pageToken = $files->getNextPageToken();
    } catch (Exception $e) {
      print "An error occurred: " . $e->getMessage();
      $pageToken = NULL;
    }
  } while ($pageToken);
  return $result;
}

但我得到了这个错误:

致命错误:在非对象上调用成员函数 getItems() C:\程序文件 (x86)\EasyPHP-5.3.6.1\www\workspace\CPS\class\controller\CtrlGoogleDrive.php 在第 115 行

你的数组似乎是空的,但它不应该是:

Array
(
    [kind] => drive#fileList
    [etag] => "WtRjAPZWbDA7_fkFjc5ojsEvE7I/lmSsH-kN3I4LpwShGKUKAM7cxbI"
    [selfLink] => https://www.googleapis.com/drive/v2/files
    [items] => Array
        (
        )

)

【问题讨论】:

    标签: php google-drive-api


    【解决方案1】:

    PHP 客户端库可以通过两种方式运行,返回对象或关联数组,后者是默认值。

    文档中的示例假设您希望库返回对象,否则您将不得不替换以下两个调用:

    $files->getItems()
    $files->getNextPageToken()
    

    使用关联数组的相应调用:

    $files['items']
    $files['nextPageToken']
    

    更好的是,您可以通过设置将库配置为始终返回对象

    $apiConfig['use_objects'] = true;
    

    请查看config.php 文件了解更多配置选项:

    http://code.google.com/p/google-api-php-client/source/browse/trunk/src/config.php

    【讨论】:

    • 谢谢克劳迪奥,应该是这样,我非常感谢您对我关于 Google Drive API 的每个问题的帮助;)
    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多