hamidsamak / dropbox-api
Dropbox API v2 的最小实现,支持同步
Requires
- php: ^7.1|^8.0
- ext-json: *
- graham-campbell/guzzle-factory: ^3.0|^4.0|^5.0
- guzzlehttp/guzzle: ^6.2|^7.0
Requires (Dev)
- phpunit/phpunit: ^9.4
Conflicts
- guzzlehttp/psr7: <1.7.0
README
Dropbox API v2 的最小实现
这是 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'
如果您找不到您喜欢的函数,您可以直接使用 contentEndpointRequest
和 rpcEndpointRequest
函数。
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)。请参阅许可证文件以获取更多信息。