使用来自谷歌的最新版本的 PHP api (0.60),来自谷歌开发者页面的代码示例似乎可以工作,除了在函数末尾使用“print_r($createdFile)”时“webViewLink”字段为空/null。
我的 Google Apps 域的 drive.google.com 站点显示使用公共权限成功创建的新文件夹。
有任何想法吗?
使用来自谷歌的最新版本的 PHP api (0.60),来自谷歌开发者页面的代码示例似乎可以工作,除了在函数末尾使用“print_r($createdFile)”时“webViewLink”字段为空/null。
我的 Google Apps 域的 drive.google.com 站点显示使用公共权限成功创建的新文件夹。
有任何想法吗?
“几年”后,这是一个带有服务帐户的工作示例。我有一个 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
你把它排除在外。
我编写了一个小型 JavaScript 应用程序,列出了您的公共文件夹。您能否确认您的文件夹显示在列表中?如果它没有显示,它不会公开共享,因此没有 webViewLink:
https://googledrive.com/host/0B0YvUuHHn3Mna3Rzb19tLTYyOXc/
该页面托管在 Google 驱动器本身中,因此它由 Google 驱动器提供服务并访问 Google 驱动器,并且对于任何询问的人,不,宇宙没有内爆:-)
作为一种解决方法,如果您有文件夹 ID,则可以使用https://googledrive.com/host/FOLDER_ID_HERE
可以通过执行以下操作来检索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