您好,我遇到了同样的问题,最后一个答案不是,因为 getWebContentLink 应该是为未经授权的用户提供的可下载链接,正如谷歌开发者网站上所说
“如果您想允许未经授权的用户直接在 Web 浏览器中而不是通过 API 下载文件,请使用 webContentLink。您可以将用户重定向到此 URL,或将其作为可点击链接提供。”
我的代码(以及上面的谷歌声明)的问题是我从我的 web 应用程序上传的文件默认情况下是不可共享的。实际上并非所有文件。
所以当我添加到我的代码中时,适当的权限是这样的:
//the function
function insertGooglePermission($service, $fileId, $value, $type, $role) {
set_include_path(get_include_path() . PATH_SEPARATOR . APP_ROOT . '/conf/google-drive/src');
include_once APP_ROOT . '/conf/google-drive/vendor/autoload.php';
$newPermission = new Google_Service_Drive_Permission();
$newPermission->setValue($value);
$newPermission->setType($type);
$newPermission->setRole($role);
try {
return $service->permissions->insert($fileId, $newPermission);
} catch (Exception $e) {
print "ERROR: " . $e->getMessage();
}
return NULL;
}
//and the usage
insertGooglePermission($service, $createdFile->getId(), "default", "anyone", "reader");
403 错误消失了。我必须告诉您,授予此权限使其能够被碰巧知道文件 ID 的任何人访问,所以我认为这可能是有风险的......因为我的需要它是完美的。
希望它有助于享受