如何使用 PHP SDK 验证 Dropbox 帐户并获取文件?

How to authenticate to a dropbox account and get a file with the PHP SDK?

我正在编写一个小的 php 脚本,用于从保管箱帐户中获取文件。它用于将 CSV 数据导入客户的网站。

到目前为止,我使用 Dropbox 中的共享链接来完成此类任务,但现在数据较少 public,我想对我客户的帐户进行身份验证。

有一个关于 https://www.dropbox.com/developers-v1/core/sdks/php 的教程以及更进一步的教程,但我写下了一个循序渐进的指南,希望对其他人使用 Dropbox 的第一步有所帮助 API。

我使用了 PHP sdk,但它可能与所有其他 SDK 非常相似。

那么,如何验证保管箱帐户并获取文件内容?

由于 API 1.x 已弃用,以下是 v2

的分步指南
  • 使用开发者的 Dropbox 帐户登录 Dropbox
  • 转到 "Dropbox App Console" https://www.dropbox.com/developers/apps 并注册一个应用程序(常规 Dropbox API)。适当地命名;名称不能包含 "Dropbox"。我选择了"MYVENDORNAMEGetFile"。该应用程序是您自己的脚本,它只是在这里注册。按照说明进行操作。选择 "Permission type: App folder"。 "Status: Development" 可以;禁止 OAuth "Implicit grant"
  • 由于 PHP 不再有官方 SDK,请使用 composer require kunalvarma05/dropbox-php-sdkhttps://github.com/kunalvarma05/dropbox-php-sdk 获取维护良好的非官方 SDK。
  • 按照 https://github.com/kunalvarma05/dropbox-php-sdk/wiki/Authentication-and-Authorization 中的说明创建三个文件 login.php、header.php 和 login-callback.php 来制作一个迷你站点;用您的信息填写 header.php。
  • 将该迷你站点放在服务器上(不必与使用令牌的位置相同)。
  • 在 Dropbox 应用程序控制台中将 link 注册为 "Redirect URI" 登录回调(例如 https://www.mydomain/dropboxauth/login-callback.php)。
  • 将 link 到 login.php 交给您的 "user" 并要求他们通过 link 进行身份验证。如果是您自己并且您使用不同的保管箱帐户,请确保使用正确的帐户(使用各种浏览器)。
  • 要求用户将返回的令牌传递给您(您也可以通过 php 通过电子邮件发送它)并告诉 him/her 在哪里可以找到新创建的 Dropbox/Apps/MYVENDORNAMEGetFile 目录。
  • 您现在可以使用 App Key、App Secret 和 Token 进行身份验证和执行操作,例如获取 https://github.com/kunalvarma05/dropbox-php-sdk/wiki/Upload-and-Download-Files

    中记录的文件内容
    // Configure Dropbox Application
    $app = new \Kunnu\Dropbox\DropboxApp($dropboxAppKey, $dropboxAppSecret, $dropboxToken);
    // Configure Dropbox service
    $dropbox = new \Kunnu\Dropbox\Dropbox($app);
    // Download Dropbox file
    $file = $dropbox->download('/'.$fileName);
    // File Contents
    $itemData = $file->getContents();