我是Google API的新手。 我能够从应用程序脚本中上传此文件,并且通过该脚本上传的任何文件都只会存储到我的驱动器中。 但是如何使用javascript做到这一点。 google上的示例: https : //developers.google.com/drive/web/quicks ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
在Google API资源管理器上,我尝试在drive.permissions.create中提供正确的fileId。 我将supportTeamDrives设置为true,并使用角色:读者和类型:任何人来设置请求正文。 这只是给我的错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidLinkVisibility",
"message": "Bad Request. User message: \"\""
}
],
"code": 400,
"message": "Bad Request. User message: \"\""
}
}
我的PHP代码中也是如此。 这是我所能找到的最接近的位置:
...
$userPermission = new Google_Service_Drive_Permission( array(
'type' => 'anyone',
'role' => 'reader',
));
$service->permissions->create( $imageId, $userPermission, array(
'supportsTeamDrives' => true,
));
...
我找不到关于该错误的任何内容:
invalidLinkVisibility
我需要做的是将文件夹中20-50个文件的权限临时设置为“公开”(即,知道链接的任何人都可以看到),因为我正在发送webContentLink(或webViewLink,我还没有弄清楚)我需要使用哪一个)到另一个API上载图片。 完成此操作后,我想删除公共访问权限。 一种选择是将文件夹的权限(具有递归公共访问权限)设置为公共访问权限。 我只是不知道如何在PHP中更改(或添加)Google Drive API中的文件权限。
一种替代方法是,如果有某种方法可以通过包含令牌的URL获取图像,例如
$source = $files.$image1;
$context = stream_context_create( array(
'https' => array(
'header' => 'Authorization: Bearer '. $token
)
) );
$image = file_get_contents( $source, false, $context );
其中$ token是验证服务的身份验证令牌,$ files是https://drive.google.com/a/file/d/,而$ image1是文件的ID。 当然,在尝试此操作时,我必须先登录我的Google帐户,因为我将使用另一个API调用这些链接并将内容发布到其他服务,所以该帐户将无法使用。 有什么办法可以使这项工作吗? 这样,我就不必担心文件权限(倒数第二个)。
您需要先删除旧的权限对象,该对象通常具有默认的初始ID:10933160239610460256k(当我尝试通过分析GDrive前端与后端的交互来找出此解决方案时,我找到了此ID)
$service->permissions->delete($file->id, '10933160239610460256k',array('supportsTeamDrives'=>true));
然后像这样创建一个新的权限
$Permission = new \Google_Service_Drive_Permission(array(
'type' => 'anyone',
'role' => "reader",
'additionalRoles' => [],
'withLink' => true,
'value' =>'YOUR_TEAM_DRIVE_DOMAIN'
));
$service->permissions->create(
$file->id, $Permission, array('fields' => 'id','supportsTeamDrives'=>true));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.