我正在使用 php Google Drive 库在 Google Drive 内创建文件夹,目前我正在将其权限设置为任何人,这不是我需要的。我希望只有在 json 文件中提供凭据的该驱动器的所有者才能读取我允许的特定电子邮件。
Chatgpt 没有给出任何正确的解决方案,请帮我重新评分。
这是代码
$driveService = initialize_google_drive_client();
$folder_name = 'test123';
// Define the folder metadata
$folderMetadata = new Google_Service_Drive_DriveFile([
'name' => $folder_name,
'mimeType' => 'application/vnd.google-apps.folder',
]);
// Create the folder in Google Drive
$folder = $driveService->files->create($folderMetadata, [
'fields' => 'id',
]);
if ($folder) {
// Set permissions for the folder to make it public
$permission = new Google_Service_Drive_Permission([
'type' => 'anyone',
'role' => 'reader',
]);
$driveService->permissions->create($folder->id, $permission);
}
Chatgpt 代码在这里:
if ($folder) {
// Remove any existing permissions for 'anyone' (optional)
$driveService->permissions->delete($folder->id, 'anyone');
// Set permissions for specific email addresses
$emailAddresses = ['[email protected]', '[email protected]'];
foreach ($emailAddresses as $email) {
$permission = new Google_Service_Drive_Permission([
'type' => 'user',
'role' => 'writer', // You can also use 'reader' or other roles as needed.
'emailAddress' => $email,
]);
$driveService->permissions->create($folder->id, $permission);
}
}
您做错了,credentials.json 应该由 you 开发人员创建,这违反了 google TOS 给出您的 credential.json 的做法。
credentials.json 未链接到用户,它链接到 Google 开发者控制台上的项目,并用于请求用户授权。
对应用程序进行身份验证并授予其访问其数据权限的用户是将要创建文件的用户,因此您不需要为它们设置权限。