Для загрузки на Google Drive требуются некоторые дополнительные шаги.Например, запрос HTTP POST должен содержать токен авторизации , который, в свою очередь, предоставляется вам только после аутентификации (войдите в систему с учетной записью Google).Для Google Диска вы также должны использовать безопасные соединения (https), для которых требуются библиотеки SSL, такие как OpenSSL.
Пример из документов API:
POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media HTTP/1.1
Content-Type: image/jpeg
Content-Length: [NUMBER_OF_BYTES_IN_FILE]
Authorization: Bearer [YOUR_AUTH_TOKEN]
[JPEG_DATA]
Файл простойAPI загрузки для Google Drive задокументирован здесь:
https://developers.google.com/drive/api/v3/simple-upload
Обновление
Попробуйте в этом примере требуется действительный токен авторизации:
procedure TDriveAPITest.Run;
var
PostData: TStream;
Response: string;
begin
PostData := TFileStream.Create('test.png', fmOpenRead or fmShareDenyWrite);
try
IdHTTP := TIdHTTP.Create;
try
IdHTTP.HTTPOptions := IdHTTP.HTTPOptions + [hoNoProtocolErrorException];
IdHTTP.Request.CustomHeaders.Values['Authorization'] := 'Bearer [YOUR_AUTH_TOKEN]';
Response := IdHTTP.Post('https://www.googleapis.com/upload/drive/v3/files?uploadType=media', PostData);
if IdHTTP.ResponseCode = 200 then begin
WriteLn('Response: ' + Response);
end else begin
WriteLn('Error: ' + IdHTTP.ResponseText);
end;
finally
IdHTTP.Free;
end;
finally
PostData.Free;
end;
end;
Вывод:
Error: HTTP/1.0 401 Unauthorized