hamidsamak/dropbox-api

Dropbox API v2 的最小实现,支持同步

v1.0.0 2022-08-07 04:04 UTC

This package is auto-updated.

Last update: 2024-09-08 14:42:46 UTC


README

Dropbox API v2 的最小实现

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这是 Dropbox API v2 的最小 PHP 实现。[链接](https://www.dropbox.com/developers/documentation/http/overview)。它仅包含我们[flysystem-dropbox适配器](https://github.com/spatie/flysystem-dropbox)所需的方法。尽管如此,我们仍然欢迎通过 PR 添加客户端的额外方法。

以下是一些使用此包的示例

$client = new Spatie\Dropbox\Client($authorizationToken);

//create a folder
$client->createFolder($path);

//list a folder
$client->listFolder($path);

//get a temporary link
$client->getTemporaryLink($path);

支持我们

我们投入了大量资源来创建[顶级开源包](https://spatie.be/open-source)。您可以通过[购买我们的付费产品](https://spatie.be/open-source/support-us)来支持我们。

我们非常感激您从家乡寄给我们明信片,并说明您正在使用我们的哪些包。您可以在[我们的联系页面](https://spatie.be/about-us)上找到我们的地址。我们将在[我们的虚拟明信片墙](https://spatie.be/open-source/postcards)上发布所有收到的明信片。

安装

您可以通过 composer 安装此包

composer require spatie/dropbox-api

用法

您需要做的第一件事是在 Dropbox 获取一个授权令牌。与[其他公司](https://google.com)不同,Dropbox 使这个过程变得非常简单。您只需在 [App Console](https://www.dropbox.com/developers/apps) 中为任何 Dropbox API 应用程序生成一个令牌。更多详情请参阅[Dropbox 开发者博客](https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/)。

有了授权令牌,您就可以实例化一个 Spatie\Dropbox\Client

$client = new Spatie\Dropbox\Client($authorizationToken);

或者,您也可以实现 Spatie\Dropbox\TokenProvider,它将提供从其 TokenProvider->getToken(): string 方法中获取的访问令牌。

如果您使用 oauth2 进行身份验证以及获取刷新令牌和访问令牌(如 [thephpleague/oauth2-client](https://github.com/thephpleague/oauth2-client)),则可以创建一个适配器,该适配器内部处理令牌过期和刷新令牌,并在运行时通过 TokenProvider->getToken(): string 方法提供访问令牌。

(Dropbox 宣布他们将在 2021 年中旬将访问令牌移至短寿命访问令牌)。

// implements Spatie\Dropbox\TokenProvider
$tokenProvider = new AutoRefreshingDropBoxTokenService($refreshToken);
$client = new Spatie\Dropbox\Client($tokenProvider);

或者,您也可以使用您的应用程序密钥和密钥进行身份验证。

$client = new Spatie\Dropbox\Client([$appKey, $appSecret]);

如果您只需要访问公共端点,则可以不带任何参数实例化 Spatie\Dropbox\Client

$client = new Spatie\Dropbox\Client();

Dropbox 端点

查看 Spatie\Dropbox\Client 的[源代码](https://github.com/spatie/dropbox-api/blob/master/src/Client.php),了解您可以使用的方法。

以下是一个示例

$content = 'hello, world';
$client->upload('/dropboxpath/filename.txt', $content, $mode='add');

$from = '/dropboxpath/somefile.txt';
$to = '/dropboxpath/archive/somefile.txt';
$client->move($from, $to);

如果目标文件名已存在,dropbox 将抛出带有 'to/conflict/file/..' 的异常。

upload()move() 方法有一个可选的额外参数 'autorename',尝试让 dropbox 自动重命名文件以解决此类冲突。

以下是一个示例

$from = '/dropboxpath/somefile.txt';
$to = '/dropboxpath/archive/somefile.txt';
$client->move($from, $to, $autorename=true);
// with autorename results in 'somefile (1).txt'

如果您找不到您喜欢的函数,您可以直接使用 contentEndpointRequestrpcEndpointRequest 函数。

public function contentEndpointRequest(string $endpoint, array $arguments, $body): ResponseInterface

public function rpcEndpointRequest(string $endpoint, array $parameters): array

以下是一个示例

$client->rpcEndpointRequest('search', ['path' => '', 'query' => 'bat cave']);

如果您需要更改 API 请求中使用的端点 URL 的子域,您可以在端点路径前加上 subdomain::

以下是一个示例

$client->rpcEndpointRequest('content::files/get_thumbnail_batch', $parameters);

变更日志

请参阅[变更日志](https://github.com/hamidsamak/dropbox-api/blob/HEAD/CHANGELOG.md)以获取有关最近更改的更多信息。

测试

composer test

贡献

请参阅CONTRIBUTING以获取详细信息。

安全性

如果您发现与安全相关的错误,请通过电子邮件security@spatie.be联系,而不是使用问题跟踪器。

Postcardware

您可以使用这个包(它遵循MIT许可协议),但如果它进入了您的生产环境,我们非常感谢您从家乡寄给我们一张明信片,并注明您正在使用我们的哪个包。

我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。

我们将所有收到的明信片发布在我们的公司网站上

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。