【发布时间】:2016-02-29 23:01:35
【问题描述】:
我正在使用 google drive v3 api 上传文件,然后使用响应中的 web 视图链接在浏览器中预览它。但是网络视图链接即将为空。当我使用 v2 时,我可以使用备用链接来做到这一点。
我没有设置父引用,所以我假设根据文档,文件存储在我的服务帐户的驱动器文件夹(根)中。由于我无法登录服务帐户,因此我与现有的测试 gmail 帐户共享了该文件,并且已共享。
我的问题是如何使用System.Diagnostics.Process.Start(newFile.WebViewLink);在浏览器中打开文件
这是我的代码:
{
File fileInGoogleDrive = Utils.uploadToDrive(service, pathOfTheFileToBeUploaded, "root");
Permission toShare = new Permission();
toShare.EmailAddress = "xyz@gmail.com";
toShare.Type = "user";
toShare.Role = "reader";
PermissionsResource.CreateRequest createRequest = service.Permissions.Create(toShare, fileInGoogleDrive.Id);
createRequest.Execute();
return fileInGoogleDrive.WebViewLink; //THIS IS NULL
}
这里是上传代码:
public static File uploadToDrive(DriveService _service, string _uploadFile, string _parent = "root")
{
if (!String.IsNullOrEmpty(_uploadFile))
{
File fileMetadata = new File();
fileMetadata.Name = System.IO.Path.GetFileName(_uploadFile);
fileMetadata.MimeType = GetMimeType(_uploadFile);
//fileMetadata.Parents = new List<FilesResource>() { new FilesResource() {}};
try
{
byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile);
System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);
FilesResource.CreateMediaUpload request = _service.Files.Create(fileMetadata, stream, GetMimeType(_uploadFile));
request.Upload();
return request.ResponseBody;
}
catch (System.IO.IOException iox)
{
// Log
return null;
}
catch (Exception e) // any special google drive exceptions??
{
//Log
return null;
}
}
else
{
//Log file does not exist
return null;
}
}
有人可以在这里指导我吗?
【问题讨论】:
标签: c# .net google-drive-api service-accounts