Ich scheine nicht zu verwalten die Dateikopie Betrieb mit der Dropbox API. Ich kann meinen Kunden erfolgreich autorisieren, Dateien herunterladen und hochladen. Der Kopiervorgang benötigt die POST-Methode und ich denke, dass ich hier eine falsche Anfrage erzeuge. Ich definiere die POST-Methode für die OAuth-Authentifizierung und benutze Indy TIdHTTP, um die Anfrage zu posten, bekomme aber immer den Fehlercode 403 - Permission denied.Wie kopiert man Dateien mit Hilfe der DropBox REST API in Delphi
Hier ist die Dropbox api Beschreibung: https://www.dropbox.com/developers/reference/api#fileops-copy
Hier ist ein Teil meines Codes ist:
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;
Versuchen Sie sich umzusehen, wie Sie Indy mit SSL verwenden. Ich wette, dass Sie die OpenSSL-Bibliotheken vermissen. – TLama
Was lässt Sie denken, dass der Fehler etwas anderes als die dokumentierte Bedeutung bedeutet? "403: Ein ungültiger Kopiervorgang wurde versucht (z. B. gibt es bereits eine Datei am angegebenen Ziel oder einen freigegebenen Ordner in einen freigegebenen Ordner kopiert)." –
@Tlama, würde nicht fehlen SSL-Bibliotheken stören auch Autorisierung, Upload und Download-Operationen, die angeblich funktionieren? –