2013-07-17 3 views
1

Я использую Ниже фрагмент кода для получения файлов с учетной записью службы.Ошибка Google Drive API 1.4: произошла ошибка при отправке прямого сообщения или получении ответа

 var certificate = new X509Certificate2("D:\\05-privatekey.p12", "notasecret", X509KeyStorageFlags.Exportable); 
     var privateKey = certificate.Export(X509ContentType.Cert); 
     var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate) 
     { 
      ServiceAccountId = "[email protected]account.com", 
      Scope = DriveService.Scopes.Drive.GetStringValue(), 
      ServiceAccountUser = "[email protected]" 
     }; 
     var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState); 
     DriveService service = new DriveService(new BaseClientService.Initializer() 
     { 
      Authenticator = auth, 
      ApplicationName = "My APP", 
     }); 

     FilesResource.ListRequest request = service.Files.List(); 
     FileList files = request.Execute(); 

Здесь Execute() API дает исключению

Ошибку произошел во время отправки прямого сообщения или получения ответа.

Edit: Проект основан на параметрах, указанных @https://code.google.com/p/google-api-dotnet-client/wiki/Build

Edit 2: У меня есть соответствующие настройки в CPanel на основе учетной записи службы

+0

Вы прошли через делегацию, описанную на https://developers.google.com/drive/delegation? –

+0

Спасибо Burcu, Он начинает работать .... Я создал новую учетную запись Google APP и сделал настройку, упомянутую @ https://developers.google.com/drive/delegation..... Но я думаю, что это требует некоторых время для вступления в силу .... :-) – Jeevan

+0

Приятно знать, что сейчас работает. –

ответ

0

У меня была та же проблема. В конце концов, я начал работать. У меня было несколько ошибок.

  1. Я пошел в Google Cloud Console и восстановил и загрузил файл ключа. Перейдите в API & auth-> Зарегистрированные приложения.
  2. Единственные свойства, которые я положил в объект provider, - .ServiceAccountId и .Scope.
  3. Мне пришлось заменить Scope фактической областью действия и не использовать значение перечисления (это только проблема, потому что я использую VB). Я работаю в Fusion Tables, и область действия была рендерингом как «Fusiontables», потому что VB.NET не использует функцию перечисления . Теперь я использую "https://www.googleapis.com/auth/fusiontables". Перейдите к here для получения списка допустимых областей.
  4. Для ServiceAccountId я использовал служебную учетную запись «Адрес электронной почты:» с «@» в ней. ([email protected]), а не те, которые они обозначают как «Идентификатор клиента:» в консоли (12345.apps.googleusercontent.com).

Надеюсь, это поможет другим.

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