是否可以允许网站';是任何注册用户或讨厌的用户上传文件到我的谷歌驱动器


Is it possible to allow a site's any registered user or an annoymous user to upload file to my google drive

我已经读过这个SO:如何上传到我的谷歌硬盘帐户,而不是用户

我发现这是可能的,尽管我因此决定不使用服务帐户,而是使用我自己的谷歌帐户的驱动器空间。

然而,我发现很难理解实现这一目标的确切步骤。我阅读了来自Google的OAuth2.0、Drive API和cros-upload示例。

但我真的不知道如何上传到我的驱动器,而不是当用户登录Google+时,它就变成了上传到他们自己的驱动器。

我想知道是否有人知道我应该获得的确切知识,以及从任何注册用户到我的谷歌驱动器API上传文件所需的步骤和实现。我使用PHP作为bakend,使用AngularJS作为前端。因此,如果使用方法或现有的lib(除了Drive的文档外,我找不到)可以更容易地实现这一点,那将是理想的,但构建一个lib的步骤也会很棒。

更详细的是,在我在顶部展示的帖子中,第二个答案的短语"do a one-off auth to get a refresh token, which you will store. You can then use this any time to generate the access token needed to invoke the actual Drive API. You can generate the refresh token using the Oauth Playground, so no need to write any code."让我真的不清楚具体涉及的步骤和我应该使用的api

谢谢

要将文件发送到Google Drive,您需要一个访问令牌来使用Drive用户的存储,该令牌将在创建后几分钟内过期。

要创建访问令牌,您需要一个不会过期的刷新令牌。这是做到这一点的关键。

下面是一个使用PHP api的简单文件上传示例:

https://github.com/numsu/google-drive-sdk-api-php-insert-file-parent-example

按照自述进行设置。

要编辑代码以始终从任何地方将文件发送到单个驱动器,您需要获得目标驱动器的刷新令牌,在本例中是您的刷新令牌。您将通过登录该服务并在谷歌同意屏幕上授予权限来获得它。它将保存在$_SESSION["credentials"]中。在上面做一个var_dump(),并将刷新令牌保存在可以访问它的文件或数据库中的某个地方

您现在可以删除任何指向使用oAuth登录的用户的内容,这不需要。

接下来,您需要为自己获得一个具有刷新令牌的访问令牌。这可以通过google API函数$client->refreshToken($refreshToken); 来实现

接下来,您只需要使用$client变量生成一个新的驱动器服务类:$service = new Google_Service_Drive($client);

之后,上传文件:

$file = new Google_Service_Drive_DriveFile();
$file->setTitle($title);
$file->setMimeType($mimeType);
$data = file_get_contents($filename);
$createdFile = $service->files->insert($file, array(
        'data' => $data,
        'mimeType' => $mimeType,
        ));

祝你好运!