我有表格,用户可以提交并上传到我的谷歌驱动器。以下代码完成该任务。但是,它还会请求用户允许访问其驱动器,并上传到用户的驱动器而不是我的驱动器。我希望它直接上传到我的谷歌驱动器。
如何允许我的脚本访问我的驱动器?是否可以使用一种硬编码令牌或访问令牌?
$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'
));
您必须查看服务帐户。服务帐户是属于应用程序而不是用户的帐户。它代表用户调用 API,因此它们的帐户不会真正参与其中。
这样,上传的文件将转到您可以控制的服务帐户上设置的电子邮件。完成后,您可以将服务帐户的共享设置设置为与您的主帐户,就像此开发人员所做的一样。
希望这有帮助!