我的表单可以由用户归档并上传到我的google云端硬盘。以下代码完成该任务。但是,它还要求用户允许访问其驱动器,并上传到用户的驱动器而不是我的驱动器。我希望将其直接上传到我的Google云端硬盘。
如何允许我的脚本访问我的驱动器?我可以使用一种硬编码令牌或访问令牌吗?
$client = new Google_Client();
$client->setApplicationName("Drive API Quickstart");
$client->setDeveloperKey("xxxxxxxxxxxx");
$client->setRedirectUri("xxxxxxxx");
$client->setClientId('xxxxxxxxxxx');
$client->setClientSecret('xxxxxxxxxx');
$client->setScopes(array('https://www.googleapis.com/auth/drive'));
$client->setAccessType("online");
$client->setApprovalPrompt("auto");
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (!$client->getAccessToken() && !isset($_SESSION['token'])) {
$authUrl = $client->createAuthUrl();
print "<center><a class='login text-center btn btn-primary' href='$authUrl'>Connect with google to upload file!</a></center>";
}
if (isset($_SESSION['token'])) {
$service = new Google_Service_Drive($client);
$file = new Google_Service_Drive_DriveFile();
$file->setTitle($name);
$file->setDescription('Document');
$file->setMimeType('application/pdf');
$data = file_get_contents('./uploads/'.$name);
$createdFile = $service->files->insert($file, array(
'data' => $data,
'mimeType' => 'application/pdf',
'uploadType' => 'multipart'
));
答案 0 :(得分:1)
您必须查看Service Accounts。服务帐户是属于应用程序而不是用户的帐户。它代表用户调用API,因此他们的帐户并不真正参与其中。
这样,上传的文件将转到您可以控制的服务帐户上设置的电子邮件。完成后,您可以将服务帐户的共享设置设置为与您的主帐户一样,就像this dev所做的那样。
希望这有帮助!