允许用户将文件上传到我的 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'
        ));

您必须查看服务帐户。服务帐户是属于应用程序而不是用户的帐户。它代表用户调用 API,因此它们的帐户不会真正参与其中。

这样,上传的文件将转到您可以控制的服务帐户上设置的电子邮件。完成后,您可以将服务帐户的共享设置设置为与您的主帐户,就像此开发人员所做的一样。

希望这有帮助!

相关内容

  • 没有找到相关文章