Я, похоже, не управляю файловой копией, использующей dropbox api. Я могу успешно разрешить мой клиент, загрузить и загрузить файлы. Операция копирования требует использования метода POST, и я думаю, что это то, где я вызываю неправильный запрос. Я определяю метод POST для аутентификации OAuth и использую Indy TIdHTTP для отправки запроса, но всегда получаю код ошибки 403 - Permission denied.Как скопировать файлы с помощью DropBox REST API в Delphi
Вот описание раздаточной апи: https://www.dropbox.com/developers/reference/api#fileops-copy
Вот часть моего кода:
ParamStr := Format('root=%s&from_path=%s&to_path=%s', [Root, EncodeFileName(FromPath), EncodeFileName(ToPath)]);
URL := 'https://api.dropbox.com/1/fileops/copy' + '?' + ParamStr;
Consumer := TOAuthConsumer.Create(Key, Secret);
AToken := TOAuthToken.Create(fToken, fTokenSecret);
HMAC := TOAuthSignatureMethod_HMAC_SHA1.Create;
ARequest := TOAuthRequest.Create('');
try
ARequest.HTTPURL := URL;
ARequest.Method := 'POST';
ARequest := ARequest.FromConsumerAndToken(Consumer, AToken, '');
ARequest.Sign_Request(HMAC, Consumer, AToken);
Params := TStringList.Create;
try
Params.Text := ParamStr + '&' + ARequest.GetString;
HTTP.Post(URL, Params);
finally
Params.Free;
end;
Попробуйте посмотреть, как использовать Indy с SSL. Готов поспорить, вам не хватает библиотек OpenSSL. – TLama
Что заставляет вас думать, что ошибка означает нечто иное, чем документированное значение? 403: Была предпринята попытка выполнить недопустимую операцию копирования (например, уже есть файл в данном месте назначения или копирование общей папки в общую папку). " –
@Tlama, не пропустили бы библиотеки SSL, также вмешиваются в авторизацию, загрузку и загрузку, которые предположительно работают? –