是否可以允许网站的任何注册用户或吵闹的用户将文件上传到我的google驱动器

时间:2014-10-28 19:11:45

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

我已阅读此SO:How upload to MY Google Drive account, not the users

并且我发现它可能,但我因此决定不使用服务帐户并使用我自己的谷歌帐户的驱动器空间。

然而,我发现在理解实现这一目标的确切步骤方面存在困难。我从Google上阅读了OAuth2.0,Drive API和cros-upload示例。

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

我想知道是否有人知道我应该获得的确切知识以及从任何注册用户到使用Drive API的MY google Drive实现此上传文件所需的步骤和实施。我使用PHP作为bakend和AngularJS作为前端。所以,如果使用任何一种方法或现有的lib(除了Drive&#39; doc之外我无法找到),这可能更容易,那将是理想的,但构建一个的步骤也会很棒。< / p>

更多详细信息,在我上面显示的帖子中,"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。

谢谢

1 个答案:

答案 0 :(得分:1)

要将文件发送到Google云端硬盘,您需要一个访问令牌才能使用云端硬盘用户的存储空间,此令牌会在创建后的几分钟内过期。

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

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

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

按照自述文件进行设置。

要编辑代码以便始终从任何位置将文件发送到单个云端硬盘,您需要获取目标云端硬盘的刷新令牌,在本例中为您的刷新令牌。您将通过登录服务并在Google Consent屏幕上授予权限来获取它。它将保存在$_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,
        ));
祝你好运!