2

所有代码都运行没有错误,但是当我检查我的 Google Drive 帐户时,我找不到我正在上传的文件(“document.txt”)。

它还要求我再次进行身份验证。

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
   new ClientSecrets
   {
       ClientId = "Here my clientid",
          ClientSecret = "client secret",
   },
   new[] { DriveService.Scope.Drive },
   "user",
   CancellationToken.None).Result;

// Create the service.
var service = new DriveService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "Drive API Sample",
});

File body = new File();
body.Title = "My document";
body.Description = "A test document";
body.MimeType = "text/plain";

byte[] byteArray = System.IO.File.ReadAllBytes("document.txt");
System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
request.Upload();

File file = request.ResponseBody;

问题:为什么我找不到我上传的文件,我怎样才能让它记住我的身份验证。

4

1 回答 1

0

我认为您忘记了 body.Parent所以它不知道将文件放入哪个目录。

parents[] list 包含此文件的父文件夹的集合。设置此字段会将文件放入所有提供的文件夹中。插入时,如果未提供文件夹,则文件将放置在默认根文件夹中。

例子:

body.Parents = new List<ParentReference>() { new ParentReference() { Id = 'root' } };

系统再次要求您进行身份验证,因为您没有保存身份验证。

//Scopes for use with the Google Drive API
string[] scopes = new string[] { DriveService.Scope.Drive,
                                 DriveService.Scope.DriveFile};
// here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
UserCredential credential = 
            GoogleWebAuthorizationBroker
                          .AuthorizeAsync(new ClientSecrets { ClientId = CLIENT_ID
                                                            , ClientSecret = CLIENT_SECRET }
                                          ,scopes
                                          ,Environment.UserName
                                          ,CancellationToken.None
                                          ,new FileDataStore("Daimto.GoogleDrive.Auth.Store")
                                          ).Result;

FileDataStore 将身份验证数据存储在 %appdata% 目录中。

更多详细信息可以在教程Google Drive API with C# .net – Upload

更新对于以下错误:

“您的项目未启用 API,或者您的 API 密钥上配置了 per-IP 或 per-Referer 限制,并且请求与这些限制不匹配。请使用 Google Developers Console 更新您的配置。[403] "

APIs & auth -> APIs 下为您的项目转到开发人员控制台, 启用 Google drive API 和 sdk。还要转到凭据并确保您添加了产品名称和电子邮件。

于 2014-12-03T11:46:54.187 回答