2015-12-02 9 views
1

Я действительно смущен. Я тестирую задачу google api, я могу получить доступ к своим задачам, но когда я устал вставлять задачу, она дает ошибку. в документации этот код доступен, эта доза не работает, потому что нет функции Fetch.Вставить задачу в список задач google-task-api

Task task = new Task { Title = "New Task"}; 
task.Notes = "Please complete me"; 
task.Due = "2010-10-15T12:00:00.000Z"; 

Task result = service.Tasks.Insert(task, "@default").Fetch(); 
Console.WriteLine(result.Title); 

Я изменил мой код,

Google.Apis.Tasks.v1.Data.Task task = new Google.Apis.Tasks.v1.Data.Task { Title = "five" }; 
task.Notes = "Please complete me"; 
task.Due = DateTime.Now; 

Google.Apis.Tasks.v1.Data.Task result = service.Tasks.Insert(task,taskList.Id.ToString()).Execute(); 
Console.WriteLine(result.Title); 

Но я столкнулся ошибку и Execute строку:

Необработанное исключение типа 'Google.GoogleApiException' произошло в Google.Apis. Dll

Дополнительная информация: Google.Apis.Requests.RequestError

Недостаточное разрешение [403]

+1

Вы используете правильный объем? https://www.googleapis.com/auth/tasks Если вы используете область действия: https://www.googleapis.com/auth/tasks.readonly, вы сможете читать, но не писать новые задачи. – Gerardo

+0

@gerardo Я изменил область применения TASK. Все еще не работает –

+0

ошибка специфически входит в состав: service.Tasks.Insert (task, taskList.Id.ToString()). Execute(); –

ответ

1

Вы можете скопировать следующие строки кода из Google Docs:

// If modifying these scopes, delete your previously saved credentials 
    // at ~/.credentials/tasks-dotnet-quickstart.json 
    static string[] Scopes = { TasksService.Scope.Tasks }; 
    static string ApplicationName = "YOUR APPLICATION NAME"; 

Пожалуйста, убедитесь, что вы используете один и тот же имя приложения в вашей программе и на the Google Console. И самое главное, как говорится в комментарии к коду, удалите каталог .credentials.

Следующий код работает для меня:

static void Main(string[] args) 
    { 
     UserCredential credential; 
     // Copy & Paste from Google Docs 
     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/tasks-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); 
     } 

     // Create Google Tasks API service. 
     var service = new TasksService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = ApplicationName, 
     }); 

     // Define parameters of request. 
     TasklistsResource.ListRequest listRequest = service.Tasklists.List(); 
     // Fetch all task lists 
     IList<TaskList> taskList = listRequest.Execute().Items; 

     Task task = new Task { Title = "New Task" }; 
     task.Notes = "Please complete me"; 
     task.Due = DateTime.Parse("2010-10-15T12:00:00.000Z"); 
     task.Title = "Test"; 

     // careful no verification that taskList[0] exists 
     var response = service.Tasks.Insert(task, taskLists[0].Id).Execute(); 
     Console.WriteLine(response.Title); 

     Console.ReadKey(); 
    } 

И вы правы, не существует никакого метода Fetch(), но как вы можете видеть, что я изменил его на Execute() как вы делали и он работает;)

Смежные вопросы