【发布时间】:2012-06-04 21:42:23
【问题描述】:
我似乎没有使用 dropbox api 管理文件复制操作。我可以成功授权我的客户端,下载和上传文件。复制操作需要使用 POST 方法,我认为这是我产生错误请求的地方。 我正在为 OAuth 身份验证定义 POST 方法并使用 Indy TIdHTTP 发布请求,但我总是收到错误代码 403 - Permission denied。
这里是 Dropbox api 描述: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 库。
-
是什么让您认为错误意味着除了记录的含义之外的任何其他含义? "403: 尝试了无效的复制操作(例如,给定目的地已经有文件,或者将共享文件夹复制到共享文件夹中)。"
-
@Tlama,是否缺少 SSL 库也会干扰授权、上传和下载操作,这些操作应该可以正常工作?
-
我肯定有 SSL 库。正如我所说,它适用于所有 GET 和 PUT 方法 API。
-
没有同名的文件或文件夹,我已多次检查路径是否正确。我只是想复制一个文件。目标文件夹存在,源文件也存在。
标签: delphi oauth indy dropbox-api