Code das Kopieren von Dateien (an irgendjemanden gemeinsam genutzt) in ein anderes Google -Laufwerk herzustellen, um das Client -Objekt zu erstellen: < /p>
Code: Select all
$this->client = new GClient();
$this->client->setApplicationName('Link Clone App');
$this->client->addScope(\Google\Service\Drive::DRIVE);
$this->client->setDeveloperKey(env('GOOGLE_API_KEY'));
// below line using this env var: GOOGLE_APPLICATION_CREDENTIALS=path/to/credential/json/file
// $this->client->useApplicationDefaultCredentials();
< /code>
Code, um die Datei zu kopieren: < /p>
try {
// copy file
$driveFile = new DriveFile();
$copiedFile = $this->service->files->copy($originFileId, $driveFile, ['fields' => 'id,name,size,mimeType,webViewLink,webContentLink']);
// create permission to anyone download
$newPermission = new \Google\Service\Drive\Permission();
$newPermission->setRole('reader');
$newPermission->setType('anyone');
// set permission to anyone
$this->service->permissions->create($copiedFile->id, $newPermission);
// get copied file with download link
$newFile = $this->get($copiedFile->id);
header("Location: {$newFile['webContentLink']}");
exit();
} catch (\Exception $e) {
return json_decode($e->getMessage());
}
< /code>
Wenn ich "google_api_key" zur Authentifizierung verwende, wird unten ein Fehler angezeigt, wenn versucht wird, zu kopieren: < /p>
$this->client->setDeveloperKey(env('GOOGLE_API_KEY'));
// error
^ {#75 ▼
+"error": {#94 ▼
+"errors": array:1 [▼
0 => {#95 ▼
+"domain": "global"
+"reason": "required"
+"message": "Login Required"
+"locationType": "header"
+"location": "Authorization"
}
]
+"code": 401
+"message": "Login Required"
}
}
< /code>
Wenn ich eine JSON -Datei für das Service -Konto für die Authentifizierung verwende, wird das Kopieren in das Dienstkonto erstellt. Siehe den folgenden Code < /p>
// below line using this env var: GOOGLE_APPLICATION_CREDENTIALS=path/to/credential/json/file
// $this->client->useApplicationDefaultCredentials();