spatie/dropbox-api

Dropbox API v2 的最小实现

1.22.0 2023-06-08 07:13 UTC

README

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

这是一个 Dropbox API v2 的最小 PHP 实现。它仅包含我们 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);

支持我们

我们投入了大量资源来创建 最佳的开源包。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感激您从您的家乡寄给我们明信片,并提及您正在使用我们的哪个包。您可以在 我们的联系页面 找到我们的地址。我们将所有收到的明信片发布在我们的 虚拟明信片墙上

安装

您可以通过 composer 安装此包

composer require spatie/dropbox-api

使用

您需要做的第一件事是在 Dropbox 获取一个授权令牌。与 其他公司 不同,Dropbox 使这个过程变得非常简单。您只需在 应用控制台 为任何 Dropbox API 应用生成一个令牌。您可以在 Dropbox 开发者博客 获取更多信息。

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

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

或者,您也可以实现 Spatie\Dropbox\TokenProvider,该提供者将使用其 TokenProvider->getToken(): string 方法提供访问令牌。

如果您使用 oauth2 进行身份验证和获取刷新令牌和访问令牌,(例如 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 的源代码 以了解您可以使用的方法。

以下是一个示例

$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);

更新日志

有关最近更改的更多信息,请参阅更新日志

测试

composer test

贡献

有关详细信息,请参阅贡献指南

您可以使用composer pint运行代码风格修复程序,以及使用composer phpstan运行静态分析。

安全

如果您发现有关安全性的错误,请通过[email protected]发送邮件,而不是使用问题跟踪器。

明信片软件

您可以自由使用此包(它是MIT许可),但如果它进入您的生产环境,我们非常感谢您从家乡寄给我们一张明信片,说明您正在使用我们哪个包。

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

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

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件