Google Drive API“drives.list”返回错误 400“无效查询”

问题描述 投票:0回答:1

我正在尝试使用服务帐户通过 Google API 查看和访问共享云端硬盘。

我使用 PHP 和

google/apiclient
版本
v2.16.0
库来访问 API。

这是我的代码示例:

$client = new \Google\Client();
$client->setApplicationName('My App');
$client->setAuthConfig(<contents of $jsonKey file>);
$client->setScopes([
    \Google\Service\Drive::DRIVE,
    \Google\Service\Drive::DRIVE_APPDATA,
    \Google\Service\Drive::DRIVE_FILE,
    \Google\Service\Drive::DRIVE_METADATA
]);

$service = new \Google\Service\Drive($client);
$optParams = [
  'useDomainAdminAccess' => true,
  'q' => 'name contains Clients',
];

$result1 = $service->drives->listDrives();
$result2 = $service->drives->listDrives($optParams);

$result1
返回以下内容:

Google\Service\Drive\DriveList Object
(
    [internal_gapi_mappings:protected] => Array
        (
        )

    [modelData:protected] => Array
        (
        )

    [processed:protected] => Array
        (
        )

    [collection_key:protected] => drives
    [drivesType:protected] => Google\Service\Drive\Drive
    [drivesDataType:protected] => array
    [kind] => drive#driveList
    [nextPageToken] => 
    [drives] => Array
        (
        )

)

列表为空,因为这是一个服务帐户,但确认身份验证正常工作。

$result2
返回错误:

{
  "error": {
    "code": 400,
    "message": "Invalid Value",
    "errors": [
      {
        "message": "Invalid Value",
        "domain": "global",
        "reason": "invalid",
        "location": "q",
        "locationType": "parameter"
      }
    ]
  }
}

我为

'q'
参数尝试了许多不同类型的字符串,但总是得到无效值。 我还尝试省略查询参数并仅传递
useDomainAdminAccess
参数,但这返回相同的错误。

尽管经过几个小时的搜索,我还是无法弄清楚为什么会出现此错误。 任何和所有的帮助将不胜感激。

google-drive-api google-api-php-client google-drive-shared-drive
1个回答
0
投票

在您的显示查询中,需要用单引号或双引号将

Clients
括起来。所以,请修改如下并再次测试。

来自:

'q' => 'name contains Clients',

致:

'q' => 'name contains "Clients"',

'q' => "name contains 'Clients'",

注:

  • 在此修改中,您的客户端
    $service
    可以使用Drive API的“方法:files.list”。请注意这一点。
  • 顺便说一下,在搜索查询的情况下,似乎存在以下几个已知问题。
    • https://issuetracker.google.com/issues/144979954
    • Google Drive API:“包含”与 files().list(q="name contains 'SMITH'") 中间的字符串不匹配?
© www.soinside.com 2019 - 2024. All rights reserved.