1

Я создал таблицу Google с помощью API Google API, как показано ниже. Я не получаю никаких исключений, и из кода i также удалось получить идентификатор файла. Но когда я смотрю на Google Drive, я не вижу файл. Есть ли что-то, что я должен сделать, чтобы уведомить Google Drive. Я тоже обновил свой диск. Но бесполезно. Есть идеи?новая таблица не отображается на Google Диске с использованием .NET API

Я аутентифицирован мою службу, как показано ниже:

authenticate.cs

public class SerivceAccount 
    { 
     private const string ServiceAccountEmail = "[email protected]"; 
     private static readonly X509Certificate2 Certificate = new X509Certificate2("ADExpress.p12", "notasecret", X509KeyStorageFlags.Exportable); 

     readonly ServiceAccountCredential _credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(ServiceAccountEmail) 
       { 
        Scopes = new[] 
        { 
         "https://spreadsheets.google.com/feeds", 
         DriveService.Scope.Drive, 
         "https://www.googleapis.com/auth/drive.file" 
        } 
       }.FromCertificate(Certificate)); 

     public bool Authenticate() 
     { 
      var isAuthenticated = false; 
      try 
      { 
       if (!_credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Result) 
        throw new InvalidOperationException("Access token request failed."); 
       isAuthenticated = true; 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("Exception in Authenticating " + e.ToString()); 
      } 

      return isAuthenticated; 
     } 

     public ServiceAccountCredential Credential 
     { 
      get { return _credential; } 
     } 

    } 

main.cs

var account = new SerivceAccount(); 
if (account.Authenticate()) 
      { 
    FilesResource.InsertRequest request = service.Files.Insert(new Google.Apis.Drive.v2.Data.File() 
         { 
          Title = "Test", 
          Description = "Test", 
          MimeType = "application/vnd.google-apps.spreadsheet" 
         }); 
         var file = request.Execute(); 
Console.WriteLine("File ID: " + file.Id); 
} 
+0

Как работает служба аутентификации? – DaImTo

+0

@DalmTo, я обновил свой вопрос с помощью запроса на аутентификацию. –

ответ

0

Выполняется аутентификация с использованием учетной записи службы.

Я сделал обновление моего диска слишком

Проверки своей собственный веб-версии Google Drive не покажет файлы, где созданные с помощью учетной записи службы. Учетная запись службы является ее собственным пользователем. Файл, вероятно, создается на службе учетных записей Google Drive счета вы можете проверить, что при этом files.list

пример:

/// <summary> 
    /// Retrieve a list of File resources. 
    /// </summary> 
    /// <param name="service">Drive API service instance.</param> 
    /// <returns>List of File resources.</returns> 
    public static List<File> retrieveAllFiles(DriveService service) { 
    List<File> result = new List<File>(); 
    FilesResource.ListRequest request = service.Files.List(); 

    do { 
     try { 
     FileList files = request.Execute(); 

     result.AddRange(files.Items); 
     request.PageToken = files.NextPageToken; 
     } catch (Exception e) { 
     Console.WriteLine("An error occurred: " + e.Message); 
     request.PageToken = null; 
     } 
    } while (!String.IsNullOrEmpty(request.PageToken)); 
    return result; 
    } 

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

0

На самом деле это помогает решить мою проблему. Мне нужно предоставить разрешения на просмотр файла в интерфейсе пользовательского интерфейса. Надеюсь это поможет.

Permission newPermission = new Permission(); 
newPermission.Value = "[email protected]"; 
newPermission.Type = "user"; 
newPermission.Role = "reader"; 
service.Permissions.Insert(newPermission, file.Id).Execute();