自定义 PHP 应用中的 Dropbox 集成

Dropbox integration in custom PHP app

我正在开发一个 PHP 应用程序,我需要在其中使用 Dropbox 网络服务。要求是当用户单击 'Integrate with Dropbox' link 时,应显示 Dropbox 登录弹出窗口,成功登录后,应显示另一个弹出窗口,用户可以在其中 select Dropbox 文件夹。然后,当用户从我的自定义 PHP 应用上传文件时,该文件应存储在 selected Dropbox 文件夹中。

在所有这些过程中,用户不应被重定向离开我的自定义 PHP 应用程序。

我怎样才能做到这一点?

我是否需要为保管箱创建登录弹出窗口,或者保管箱提供了一个?

您是否研究过 Dropbox API?

https://www.dropbox.com/developers/dropins/saver

您无法单独使用 PHP,您需要 AJAX 将数据保存到 Dropbox。

我相信您可以在此处找到有关记录用户和上传数据的所有信息:

Dropbox - Using the Core API in PHP

如您所见,您应该创建一个应用程序,获取访问令牌(通过 OAuth2 流程)并使用它代表用户发出 API 请求。如果您需要让您的用户留在您的网站上,您可以让 Ajax 构建一个结构来调用登录、授权等。

基本上是这些步骤:

// Include Dropbox PHP Sdk and create a new AuthBase instance (WebAuthNoRedirect is a subclass of).
$dropboxAppAuth = new dbx\WebAuth($yourAppInfo, "examples-authorize", new dbx\ArrayEntryStore($_SESSION, 'dropbox-auth-csrf-token'););

// Get an authorize url
$authorizeUrl = $dropboxAppAuth->start();

// Invite the user to authorize your app via this url 
echo "1. Go to: " . $authorizeUrl . "\n";
echo "2. Click \"Allow\" (you might have to log in first).\n";
...

// and get an access token from the GET array.
list($accessToken, $userId, $urlState) = $webAuth->finish($_GET);

// Now you need a Client instance to make you call using the API interface
$dropboxClient = new dbx\Client($accessToken, "examples-authorize");
$accountInfo = $dropboxClient->getAccountInfo();

// Get a file pointer resource from the resource you want to upload and send it using the `uploadFile()` method from the Dropbox API
$resourceFilename = 'my-data.txt';
$f = fopen($resourceFilename, "rb");
$result = $dropboxClient->uploadFile("/".$resourceFilename, dbx\WriteMode::add(), $f);

但是在该页的末尾,您可以找到这个基本示例,它已经完成并可以开始使用它了。