允许用户将文件上传到我的google云端硬盘脚本

时间:2016-02-08 20:20:37

标签: php google-api google-drive-api google-api-php-client

我的表单可以由用户归档并上传到我的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'
        ));

1 个答案:

答案 0 :(得分:1)

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

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

希望这有帮助!