【问题标题】:Can't get list of files from google drive using php无法使用 php 从谷歌驱动器获取文件列表
【发布时间】:2016-01-11 11:37:34
【问题描述】:

我正在使用带有 PHP 的 google drive API。基本上我创建了一个身份验证凭据并停留在我想要列出谷歌驱动器文件的地方。这是我尝试的代码。

<?php
require_once realpath(dirname(__FILE__) . '/gac/src/Google/autoload.php');

$client = new Google_Client();

session_start();

$client->setClientId('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$client->setClientSecret('xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$client->setRedirectUri('http://www.my-website-name.com/drive_test');
$client->setScopes(array('https://www.googleapis.com/auth/drive.file'));

if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) {
    if (isset($_GET['code'])) {
        $client->authenticate($_GET['code']);
        $_SESSION['access_token'] = $client->getAccessToken();
    } else
        $client->setAccessToken($_SESSION['access_token']);

    $service = new Google_Service_Drive($client);

    echo "<pre>";
    $all_files = "";
    $all_files = retrieveAllFiles($service);
    print_r($all_files);
    die;

} else {
    $authUrl = $client->createAuthUrl();
    header('Location: ' . $authUrl);
    exit();
}


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

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

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

?>

我得到这样的输出。

Array
(
)

请帮我解决这个问题。谢谢。

【问题讨论】:

  • 就在这行$files = $service-&gt;files-&gt;listFiles($parameters);之后,试试var_dump($files);然后var_dump($files-&gt;getItems())看看有什么输出?
  • @atom 我得到了类似pastebin.com/SkLbK5dD
  • 嗯,它看起来像是连接的。您是否需要先提供对文件的访问权限才能查看它们?
  • 在此页面的底部,有一个尝试访问结果的选项。也许检查您是否可以在此处按预期访问它们。 developers.google.com/drive/v2/reference/files/list
  • @atom,基本上有一些共享文件/文件夹和我的一些。所以我不知道该怎么做。你能检查我上面的代码,并在此基础上给我一些提示或解决方案。任何帮助将非常感激。谢谢

标签: php google-drive-api google-drive-realtime-api


【解决方案1】:

哦,是的,我终于找到了问题并解决了它。这是一个权限问题。我只是替换这段代码

$client->setScopes(array('https://www.googleapis.com/auth/drive.file'));

使用新代码

$client->setScopes(array('https://www.googleapis.com/auth/drive'));

和一切

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2022-01-07
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多