You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证Google Shared Drives中文件夹是否存在?现有PHP代码失效求助

解决Google Drive共享盘(Shared Drives)文件夹检查失效的问题

你的函数在普通云端硬盘正常,但共享盘失效,核心原因是Google Drive API默认不会返回共享盘内容,需要添加特定参数并调整逻辑:

关键修正点

  • 必须在API请求中添加两个参数:includeItemsFromAllDrives=true 和 supportsAllDrives=true,否则API会忽略共享盘内的文件/文件夹。
  • 无需添加sharedWithMe条件,该条件仅适用于个人盘中被共享的内容,和Shared Drives无关。
  • 确保你的access_token拥有访问目标共享盘的权限(比如账号是共享盘成员,或服务账号已被授权访问该共享盘)。

修改后的完整函数

public function ExistsFolderOnDrive($access_token, $folder_name, $parent_folder_id) {
    // 构建查询语句,保留原逻辑,无需添加sharedWithMe
    $query = "mimeType='application/vnd.google-apps.folder' and trashed=false and name='$folder_name' and '$parent_folder_id' in parents";

    // 拼接API URL,添加共享盘必需的参数
    $apiURL = self::DRIVE_FILES_URI . "?q=" . urlencode($query) . "&includeItemsFromAllDrives=true&supportsAllDrives=true";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiURL);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $access_token));

    $data = json_decode(curl_exec($ch), true);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($http_code != 200) {
        $error_msg = 'Failed to retrieve folder from Google Drive';
        if (curl_errno($ch)) {
            $error_msg = curl_error($ch);
        }
        throw new Exception('Error ' . $http_code . ': ' . $error_msg);
    }

    if (empty($data['files'])) {
        // 文件夹不存在
        return false;
    } else {
        // 返回第一个匹配的文件夹ID
        return $data['files'][0]['id'];
    }
}

额外注意事项

  • 如果parent_folder_id是共享盘本身的ID,该查询会直接检查共享盘根目录下的目标文件夹。
  • 若遇到403权限错误,需确认:
    • 授权时请求了足够的权限(至少drive.readonly,需修改则用drive)。
    • 访问共享盘的账号已被添加为共享盘成员(服务账号需在共享盘成员列表中)。
  • 若存在同名文件夹,函数会返回第一个匹配的ID,需精确匹配可添加更多条件(如创建时间、所有者等)。

内容的提问来源于stack exchange,提问作者Ampopo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:59:56