Всем привет
Подтолкните пожалуйста. Первый раз работаю с гугловыми библиотеками, пока пытаюсь запустить хотябы пример, не получается.
У меня цель — залить и скачать файл с гугл драйва. Для первого теста пробую на своем собственном гугл-аккаунте.
Я взял сэмплы
https://github.com/googleworkspace/dotnet-samples
Скачал gcloud CLI, сделал gcloud auth application-default login и залогинился в свой гугл аккаунт.
После этого в сэмплах стала работать инициализация
GoogleCredential credential = GoogleCredential.GetApplicationDefault().CreateScoped(DriveService.Scope.Drive);
Но теперь попытка залить тестовый файл вызывает ошибку
protected string CreateTestBlob(string filePath)
{
var fileMetadata = new Google.Apis.Drive.v3.Data.File();
fileMetadata.Name = "photo.jpg";
using (var stream = new FileStream(filePath, FileMode.Open))
{
var request = service.Files.Create(
fileMetadata, stream, "image/jpeg");
request.Fields = "id";
IUploadProgress test = request.Upload();
var file = request.ResponseBody;
return "";
}
}
IUploadProgress test = request.Upload(); — тут реквест возвращает эксепшн "The service drive has thrown an exception. HttpStatusCode is Forbidden. Request had insufficient authentication scopes."
Что оно от меня хочет и как залить файл с компа на свой гугл-драйв используя их клиентские библиотеки?
Я с этой штукой не работал, но ошибка явно указывает на проблему с аутентификацией.
Предположу, что должен быть способ связать полученный credential c отправляемым request (в твоём примере я этой связки не увидел)
Плюс, в описании API нужно посмотреть, какие scopes нужны для загрузки файла, возможно их больше или они другие, чем ты запрашивает по дефолту.