【问题标题】:'webViewLink' is empty/null when using PHP code sample使用 PHP 代码示例时,“webViewLink”为空/null
【发布时间】:2012-12-01 21:51:41
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

标签: google-apps google-drive-api


【解决方案1】:

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

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 参数:如果您忽略它,它不会检索除idname 之外的任何内容。

【讨论】:

  • 这现在需要成为公认的答案。谢谢你。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      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)。如果不这样做,则只有idname 可用。

      如果你还需要配置文件权限,你可以这样做:

      $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

      【讨论】:

        猜你喜欢
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        相关资源
        最近更新 更多