用于文件上传的 Dropbox Core API
Dropbox Core API for file uploads
我 运行 用户访问该服务以生成 PDF 文档,然后通过电子邮件发送给他们。我正在探索替代交付路线 - 将准备好的文档直接弹出到他们指定的 Dropbox 文件夹中。
经过一番研究,我发现了 Dropbox API and then played with their "explorer" here。检查他们生成的用于执行文件上传的 cURL,我发现使用 PHP 点可以很容易地完成。创建一个新应用程序后,我写了一些 PHP 脚本
$headers = array('Authorization: Bearer ul...',
'Content-Type: application/octet-stream',
'Dropbox-API-Arg: {"path":"/test.txt","mode":"add"}');
$data = 'Betty bought a bit of butter';
$ch = curl_init('https://content.dropboxapi.com/2-beta-2/files/upload/');
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
在 运行 运行此脚本时一切正常 - 有问题的文件在几分之一秒内出现在我的 Dropbox 中。
一切都很好。但是,我刚刚开始使用 Dropbox API,这里有很多我不明白的地方
- 我上面盲目模仿他们的资源管理器示例代码编写的代码是上传文件的正确方法吗?
- 在我的例子中,我服务的用户必须向我提供一个有效的应用程序令牌,我可以在上面的
Authorization:Bearer...
位中使用。我假设这个令牌限制我只能在他们的 app 文件夹的范围内工作?他们自然不愿意交出让我可以用他们的 Dropbox 做我想做的事情的令牌。 *不用说 - 这将取决于他们将 "App" 权限类型配置为 App 文件夹.
如果我能从那些比我更了解 Dropbox API 的人那里得到关于我的方法的任何反馈,特别是其中的缺陷,我将不胜感激。
Dropbox API Explorer 使用刚刚发布测试版的新 Dropbox API v2。您可以在此处找到官方文档,包括 curl 示例:
https://www.dropbox.com/developers/documentation/http#documentation-files-upload
只要您按照此处的说明使用它(例如,您现在应该使用 /2/ 而不是 /2-beta-2/),就应该没问题。
关于权限,有几个可以选择(虽然APIv2目前只支持app文件夹和完整的Dropbox),权限由开发者在注册应用时选择:
https://www.dropbox.com/developers/reference/devguide#app-permissions
当用户 link 访问应用时,您的应用为用户的 Dropbox 帐户获取的访问令牌仅限于应用的权限。
在你的情况下,app 文件夹权限听起来就足够了。
我 运行 用户访问该服务以生成 PDF 文档,然后通过电子邮件发送给他们。我正在探索替代交付路线 - 将准备好的文档直接弹出到他们指定的 Dropbox 文件夹中。
经过一番研究,我发现了 Dropbox API and then played with their "explorer" here。检查他们生成的用于执行文件上传的 cURL,我发现使用 PHP 点可以很容易地完成。创建一个新应用程序后,我写了一些 PHP 脚本
$headers = array('Authorization: Bearer ul...',
'Content-Type: application/octet-stream',
'Dropbox-API-Arg: {"path":"/test.txt","mode":"add"}');
$data = 'Betty bought a bit of butter';
$ch = curl_init('https://content.dropboxapi.com/2-beta-2/files/upload/');
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
在 运行 运行此脚本时一切正常 - 有问题的文件在几分之一秒内出现在我的 Dropbox 中。
一切都很好。但是,我刚刚开始使用 Dropbox API,这里有很多我不明白的地方
- 我上面盲目模仿他们的资源管理器示例代码编写的代码是上传文件的正确方法吗?
- 在我的例子中,我服务的用户必须向我提供一个有效的应用程序令牌,我可以在上面的
Authorization:Bearer...
位中使用。我假设这个令牌限制我只能在他们的 app 文件夹的范围内工作?他们自然不愿意交出让我可以用他们的 Dropbox 做我想做的事情的令牌。 *不用说 - 这将取决于他们将 "App" 权限类型配置为 App 文件夹.
如果我能从那些比我更了解 Dropbox API 的人那里得到关于我的方法的任何反馈,特别是其中的缺陷,我将不胜感激。
Dropbox API Explorer 使用刚刚发布测试版的新 Dropbox API v2。您可以在此处找到官方文档,包括 curl 示例:
https://www.dropbox.com/developers/documentation/http#documentation-files-upload
只要您按照此处的说明使用它(例如,您现在应该使用 /2/ 而不是 /2-beta-2/),就应该没问题。
关于权限,有几个可以选择(虽然APIv2目前只支持app文件夹和完整的Dropbox),权限由开发者在注册应用时选择:
https://www.dropbox.com/developers/reference/devguide#app-permissions
当用户 link 访问应用时,您的应用为用户的 Dropbox 帐户获取的访问令牌仅限于应用的权限。
在你的情况下,app 文件夹权限听起来就足够了。