Ограничение квоты учетной записи службы Google Диска - PullRequest
0 голосов
/ 26 июня 2018

Я загружаю большие файлы образов дисков в C # WinForms (в конечном итоге Служба Windows) в папку на моем диске и в настоящее время использую для этого учетную запись Google Service.

У меня есть подписка на 2 ТБ дляМой личный диск, однако после завершения загрузки больших файлов (> 15 ГБ, что является квотой ServiceAccount), он выдает исключение, потому что ServiceAccount не имеет той же квоты, что и моя личная учетная запись.

  1. Как я могу аутентифицироваться, а затем загружать файлы, используя мою личную учетную запись вместо служебной учетной записи?Это снимет ограничение квоты.

    ИЛИ

  2. Могу ли я установить разрешения для загружаемого файла, чтобы я не получилэта ошибка квоты?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Решением было использование OAuth и аутентификация пользователя через браузер.

UserCredential credential;

    using (var stream =
        new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
    {
        string credPath = System.Environment.GetFolderPath(
            System.Environment.SpecialFolder.Personal);
        credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");

        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(stream).Secrets,
            Scopes,
            "user",
            CancellationToken.None,
            new FileDataStore(credPath, true)).Result;
        Console.WriteLine("Credential file saved to: " + credPath);
    }
0 голосов
/ 26 июня 2018

Дальмто написал руководство по загрузке в Drive API с использованием C #:

Google Drive API с C # .net - Загрузить

if (System.IO.File.Exists(_uploadFile))
            {
                File body = new File();
                body.Title = System.IO.Path.GetFileName(_uploadFile);
                body.Description = "File uploaded by Diamto Drive Sample";
                body.MimeType = GetMimeType(_uploadFile);
                body.Parents = new List() { new ParentReference() { Id = _parent } };

                // File's content.
                byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile);
                System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);
                try
                {
                    FilesResource.InsertMediaUpload request = _service.Files.Insert(body, stream, GetMimeType(_uploadFile));
                    request.Upload();
                    return request.ResponseBody;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    return null;
                }
            }
            else {
                Console.WriteLine("File does not exist: " + _uploadFile);
                return null;
            }

Примечание : Сервисные учетные записи не рекомендуется использовать для обработки больших объемов данных, будь то загрузка / выгрузка.

...