1

파일을 Google 드라이브에 특정 폴더에 업로드하려고합니다. 업로드 대상 (파일의 부모)을 설정하기 위해 폴더의 ID (이름뿐 아니라)가 필요하기 때문에 이름으로 검색하고 아래 쿼리에서 첫 번째로 반환 된 파일의 ID를 얻으려고합니다. 대신 결과 나 오류 얻을 : 난 아무것도를 검색하려고하면Google 드라이브 API v3 (C# .NET) 제목별로 폴더/파일을 검색합니다. RequestError 값이 잘못되었습니다. [400]

Google.Apis.Requests.RequestError Invalid Value [400] 
Errors [ Message[Invalid Value] Location[q - parameter] Reason[invalid] Domain[global] 
at Google.Apis.Requests.ClientServiceRequest`1.Execute() 
... 

정말 하나가이 오류 또는 빈 응답 (빈 목록을 반환 mimeType='application/vnd.google-apps.folder' 모든 디렉토리 즉, 쿼리를 얻기를 (AN를 포기하지 않습니다 오류는 있지만)).

내 코드의 관련 조각 :

FilesResource.ListRequest request = service.Files.List(); 
request.Q = "title='test_folder'"; 
string folderId = request.Execute().Files[0].Id; // Error occurs here upon execution 
... 
fileMeta.Parents = new List<string> { folderId }; 

재미있는 것은이가이 정확한 쿼리 API v3의를 API v2에서 구글의 API 테스트 사이트에서 작동하지만. 모든 폴더를 가져 오는 쿼리는 둘 다 (Google의 테스트 사이트에서 v2 및 v3) 작동하지만 .NET 애플리케이션을 통해 빈 응답을받습니다.

PS : "내 드라이브"디렉토리 작품 파일 업로드, 파일 권한 등 일을 내가 망쳐 곳/체크해야하는지에 대한 아이디어와 제안을

열기 설정과 같은 서비스 운영을 구동한다.

답변

1

문제는 Google 드라이브 v3 API (File.Name이 아닌 File.Title)를 사용하고 있다는 것입니다. Title이 v2에서 사용되었습니다.

request.Q = "mimeType = 'application/vnd.google-apps.folder' and name = 'test_folder'"; 

알려진 버그 및 이미 1 년 전에도 문제를 해결하기 위해 Google에 문서의 버그를보고했습니다.

+0

이것은 실제로 트릭을 만들었습니다. 분명히 모든 올바른 v3 쿼리가 빈 응답 (나는 빈 목록을 다시 얻을) 반환 이후 비록 더 깊은 문제가있다. 그러나 답변을 주셔서 감사합니다. 나는 그것을 어느 방향 으로든 표시 할 것이지만 방향을 알려줄 수 있습니까? 내 쿼리가 올바르게 작동하는지 확인해야합니까? –

+1

q가없는 file.list를 실행하여 반환되는 내용을 확인하십시오. 서비스 계정을 사용하고 있다면 업로드 할 때까지 파일을 가지지 않을 것임을 기억하십시오. 여기에 테스트 해주세요 https://developers.google.com/apis-explorer/#p/drive/v3/ – DaImTo

+0

잠재적 인 액세스 문제를 다룰 필요가 없도록 가능한 모든 DriveService 범위를 지정하거나 허용했습니다. . 그것은 응용 프로그램에서 업로드 한 파일 만 나열하는 것 같습니다 (심지어 과거에 사용한 자격 증명이 있긴하지만 아아). 현재 사용중인 .Drive, .DriveFile 및 .DriveMetadata 범위가 있습니다. 다음 단계는 무엇입니까? 여기서 무엇을 놓치고 있습니까? –