1
我试图使用服务在Amazon S3和Google Drive之间同步文件。Google Drive PHP API返回已删除的文件
我创建了一个服务帐户并与其电子邮件共享一个文件夹。 然后用我建立的自动服务,我创建了一些文件夹。
一切都很好,直到我试图从Google Drive UI中删除这些文件夹。他们从用户界面中消失,但我的服务仍然收到它们,就好像它们在场。 这里是我使用列出文件/文件夹代码:
private function retrieveAllGoogleDriveFiles($service) {
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$parameters['q'] = "trashed=false";
$files = $service->files->listFiles($parameters);
$result = array_merge($result, $files->getItems());
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
return $result;
}
下面是我使用的授权机制:
$credentials = new Google_Auth_AssertionCredentials(
'[email protected]m',
array('https://www.googleapis.com/auth/drive'),
$private_key,
'notasecret',
'http://oauth.net/grant_type/jwt/1.0/bearer'
);
$googleClient = new Google_Client();
$googleClient->setAssertionCredentials($credentials);
if ($googleClient->getAuth()->isAccessTokenExpired()) {
$googleClient->getAuth()->refreshTokenWithAssertion();
}
$googleService = new Google_Service_Drive($googleClient);
$files_list = $this->retrieveAllGoogleDriveFiles($googleService);
其中一个用户删除一个文件/文件夹的情况下,从谷歌驱动器对我来说是真实的,我应该使同步回到S3并从那里删除文件/文件夹。
在此先感谢。
好的,有没有办法从用户界面中删除文件(作为真正的Gmail用户,而不是服务)?或者我怎么能知道用户是否删除它(取消订阅),因为对我而言,它应该表示它已被删除? – Vlado 2015-04-03 15:53:42
您可能想重新考虑服务帐户是否是最佳方式。如果同步的终端是真实的Google帐户,那么您最好直接用OAuthing作为该帐户,而不要将服务帐户用作中介。 – pinoyyid 2015-04-03 19:40:51