3

使用来自谷歌的最新版本的 PHP api (0.60),来自谷歌开发者页面的代码示例似乎可以工作,除了在函数末尾使用“print_r($createdFile)”时“webViewLink”字段为空/null。

我的 Google Apps 域的 drive.google.com 站点显示使用公共权限成功创建的新文件夹。

有任何想法吗?

4

4 回答 4

3

“几年”后,这是一个带有服务帐户的工作示例。我有一个 G Suite 帐户,并且在https://admin.google.com/example.com/AdminHome?chromeless=1#OGX:ManageOauthClients我已将我的 API 客户端设置为 API 范围https://www.googleapis.com/身份验证/驱动器,然后

include_once __DIR__ . '/../vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('my_auth.json');
$client->addScope('https://www.googleapis.com/auth/drive');
$client->setSubject('admin.example.com');
$service = new Google_Service_Drive($client);
$x = $service->files->listFiles([
  'spaces' => 'drive', // this doesn't seem necessary
  'q' => 'name = "download"',
  'fields' => 'files(id, name, webViewLink, webContentLink)',
]);

请注意这个fields论点:它不会检索任何东西,但id如果name你把它排除在外。

于 2017-05-29T07:34:32.677 回答
1

我编写了一个小型 JavaScript 应用程序,列出了您的公共文件夹。您能否确认您的文件夹显示在列表中?如果它没有显示,它不会公开共享,因此没有 webViewLink:

https://googledrive.com/host/0B0YvUuHHn3Mna3Rzb19tLTYyOXc/

该页面托管在 Google 驱动器本身中,因此它由 Google 驱动器提供服务并访问 Google 驱动器,并且对于任何询问的人,不,宇宙没有内爆:-)

于 2012-12-03T15:55:20.063 回答
0

作为一种解决方法,如果您有文件夹 ID,则可以使用https://googledrive.com/host/FOLDER_ID_HERE

于 2012-12-02T06:33:43.603 回答
0

可以通过执行以下操作来检索WebViewLink文件属性:

$file = $service->files->get($file_id, array('fields' => 'webViewLink'));
$web_link_view = $file->getWebViewLink();

或者

$sheetsList = $drive_service->files->listFiles([
  'fields' => 'files(id, name, webViewLink, webContentLink)',
]);

$web_link_view = $sheetsList->current()->getWebViewLink();

正如@chx 提到的,您应该加载文件,指定您想要携带的字段(在这种情况下,webViewLink)。如果您不这样做,则只有id并且name将可用。

如果您还需要配置文件权限,您可以执行以下操作:

$permissions = new \Google_Service_Drive_Permission();
$permissions->setRole('writer');
$permissions->setType('anyone');

$drive_service->permissions->create($file_id, $permissions);

setRole()和的可能值setType()可以在这里找到:https ://developers.google.com/drive/api/v3/reference/permissions/create

于 2020-08-07T14:59:10.373 回答