arcasolutions / unsplash
Arca Solutions 提供的访问 Unsplash API 和照片库的包装器
Requires
- php: >=5.6.0
- guzzlehttp/guzzle: ^6.3.0
- hughbertd/oauth2-unsplash: >=1.0.3
- league/oauth2-client: >=1.4.2
Requires (Dev)
- mockery/mockery: ~0.9.0
- php-vcr/php-vcr: dev-master
- php-vcr/phpunit-testlistener-vcr: *
- phpunit/phpunit: ~5.1
- satooshi/php-coveralls: dev-master
- vlucas/phpdotenv: dev-master
README
Unsplash API 的 PHP 客户端。
快速链接到您可能关心的方法
注意: 每个应用程序都必须遵守 API 指南。特别是,请记住 链接图片 并在适当的时候 触发下载。
安装
unsplash-php
使用 Composer。要使用它,需要包含库
composer require arcasolutions/unsplash
用法
配置
在使用之前,使用您的应用程序 ID 和密钥配置客户端。如果您没有应用程序 ID 和密钥,请按照 Unsplash API 中的步骤注册您的应用程序。
请注意,如果您只是使用需要 公共权限范围 的操作,则只需要 applicationId
。
请注意,如果从 $credentials 中省略了 utmSource,将会引发警告
Crew\Unsplash\HttpClient::init([ 'applicationId' => 'YOUR APPLICATION ID', 'secret' => 'YOUR APPLICATION SECRET', 'callbackUrl' => 'https://your-application.com/oauth/callback', 'utmSource' => 'NAME OF YOUR APPLICATION' ]);
授权工作流程
要访问非公共操作(例如,将照片上传到特定帐户),您需要用户访问其数据的权限。
该流程的一个示例可以在 /examples/oauth-flow.php 中找到
将他们引导到授权 URL(在生成授权 URL 之前配置任何范围)
$scopes = ['public', 'write_user']; Crew\Unsplash\HttpClient::$connection->getConnectionUrl($scopes);
授权后,Unsplash 将通过您的 OAuth 回调处理程序返回一个认证代码。使用它来生成访问令牌
Crew\Unsplash\HttpClient::$connection->generateToken($code);
有了这个令牌,现在您可以访问授权用户可用的任何其他非公共操作。
权限范围
当前由 Unsplash API 定义的权限范围是
public
(访问用户的公共数据)read_user
(访问用户的私有数据)write_user
(编辑和创建用户数据)read_photos
(从用户的照片访问私有信息)write_photos
(为用户发布和编辑照片)write_likes
(为用户点赞照片)
API 方法
有关每个调用响应的更多信息,请参阅 官方文档。
某些参数在所有方法中都是相同的
注意:返回多个对象的方返回一个 ArrayObject
,其行为类似于正常的 stdClass。
如果将 $returnArrayObject
设置为 false
,则它们返回 PageResult
,其中包含结果数组、元素总数、页面和总页数。
存在三个异常:Search::collections
、Search::photos
和 Search::users
总是返回 PageResult
。
搜索
Crew\Unsplash\Search::photos($filters)
根据搜索结果检索单页照片结果。
参数
示例
$filters = [ 'query' => 'Some query', 'page' => 3, 'per_page' => 15, 'orientation' => 'landscape' ]; Crew\Unsplash\Search::photos($filters);
Crew\Unsplash\Search::collections($filters)
根据搜索结果检索单页收藏夹结果。
参数
示例
$filters = [ 'query' => 'Some query', 'page' => 3, 'per_page' => 15, ]; Crew\Unsplash\Search::collections($filters);
Crew\Unsplash\Search::users($search, $page, $per_page)
根据搜索结果检索单页用户结果。
参数
示例
$filters = [ 'query' => 'Some query', 'page' => 3, 'per_page' => 15, ]; Crew\Unsplash\Search::users($filters);
精选收藏夹
Crew\Unsplash\CuratedCollection::all($filters, $returnArrayObject)
检索精选收藏夹列表。
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, ]; Crew\Unsplash\CuratedCollection::all($page, $per_page);
返回 PageResult 而不是 ArrayObject 的示例
Crew\Unsplash\CuratedCollection::all($page, $per_page, false);
Crew\Unsplash\CuratedCollection::find($id)
检索特定精选收藏夹。
参数
示例
Crew\Unsplash\CuratedCollection::find(integer $id);
Crew\Unsplash\CuratedCollection::photos($returnArrayObject)
从精选收藏夹检索照片。
注意:您需要首先实例化一个精选收藏夹对象。
参数
示例
$collection = Crew\Unsplash\CuratedCollection::find(integer $id); $photos = $collection->photos();
返回 PageResult 而不是 ArrayObject 的示例
$collection = Crew\Unsplash\CuratedCollection::find(integer $id); $photos = $collection->photos(false);
收藏夹
Crew\Unsplash\Collection::all($filters, $returnArrayObject)
检索收藏夹列表。
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, ]; Crew\Unsplash\Collection::all($filters);
返回 PageResult 而不是 ArrayObject 的示例
Crew\Unsplash\Collection::all($filters, false);
Crew\Unsplash\Collection::featured($filters, $returnArrayObject)
检索特色收藏夹列表。
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, ]; Crew\Unsplash\Collection::featured($filters);
返回 PageResult 而不是 ArrayObject 的示例
Crew\Unsplash\Collection::featured($filters, false);
Crew\Unsplash\Collection::related($returnArrayObject)
检索特色收藏夹列表。
注意:您必须首先实例化一个收藏夹。
参数
示例
$collection = Crew\Unsplash\Collection::find($id); $collection->related();
返回 PageResult 而不是 ArrayObject 的示例
$collection = Crew\Unsplash\Collection::find($id); $collection->related(false);
Crew\Unsplash\Collection::find($id)
检索特定收藏夹。
参数
示例
Crew\Unsplash\Collection::find(integer $id);
Crew\Unsplash\Collection::photos($filters, $returnArrayObject)
从收藏夹检索照片。
注意:您需要首先实例化一个收藏夹对象。
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, ]; $collection = Crew\Unsplash\Collection::find(integer $id); $photos = $collection->photos($filters);
返回 PageResult 而不是 ArrayObject 的示例
$filters = [ 'page' => 3, 'per_page' => 15, ]; $collection = Crew\Unsplash\Collection::find(integer $id); $photos = $collection->photos($filters, false);
Crew\Unsplash\Collection::create($title, $description, $private)
代表用户创建收藏夹。
注意:您需要 write_collections
权限范围。
参数
示例
$collection = Crew\Unsplash\Collection::create($title);
Crew\Unsplash\Collection::update($parameters)
代表用户更新收藏夹。
注意:您需要首先实例化一个收藏夹对象。
注意:您需要 write_collections
权限范围。
参数
示例
$collection = Crew\Unsplash\Collection::find(int $id); $collection->update(['private' => true])
Crew\Unsplash\Collection::destroy()
代表用户删除收藏夹。
注意:您需要首先实例化一个收藏夹对象。
注意:您需要 write_collections
权限范围。
示例
$collection = Crew\Unsplash\Collection::find(int $id); $collection->destroy()
Crew\Unsplash\Collection::add($photo_id)
代表用户在收藏夹中添加照片。
注意:您需要首先实例化一个收藏夹对象。
注意:您需要 write_collections
权限范围。
参数
示例
$collection = Crew\Unsplash\Collection::find(int $id); $collection->add(int $photo_id)
Crew\Unsplash\Collection::remove($photo_id)
代表用户从收藏夹中移除照片。
注意:您需要首先实例化一个收藏夹对象。
注意:您需要 write_collections
权限范围。
参数
示例
$collection = Crew\Unsplash\Collection::find(int $id); $collection->remove(int $photo_id)
照片
Crew\Unsplash\Photo::all($filters, $returnArrayObject)
检索照片列表。
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, 'order_by' => 'latest', ]; Crew\Unsplash\Photo::all($filters);
返回 PageResult 而不是 ArrayObject 的示例
$filters = [ 'page' => 3, 'per_page' => 15, 'order_by' => 'latest', ]; Crew\Unsplash\Photo::all($filters, false);
Crew\Unsplash\Photo::curated($filters, $returnArrayObject)
检索精选照片列表。
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, 'order_by' => 'latest', ]; Crew\Unsplash\Photo::curated($page, $per_page, $order_by);
返回 PageResult 而不是 ArrayObject 的示例
$filters = [ 'page' => 3, 'per_page' => 15, 'order_by' => 'latest', ]; Crew\Unsplash\Photo::curated($page, $per_page, $order_by, false);
Crew\Unsplash\Photo::find($id)
检索特定照片。
参数
示例
Crew\Unsplash\Photo::find($id);
Crew\Unsplash\Photo::create($file_path)
代表用户发布照片。
注意:您需要 write_photos
权限范围。
参数
示例
Crew\Unsplash\Photo::create( $file_path);
Crew\Unsplash\Photo::update($parameters = [])
代表用户发布照片。
注意:您需要 write_photos
权限范围。您需要首先实例化 Photo 对象。
参数
示例
$photo = Crew\Unsplash\Photo::find(string $id) $photo->update(array $parameters);
Crew\Unsplash\Photo::photographer()
检索照片的摄影师。
注意:您需要首先实例化照片对象。
参数
N/A
示例
$photo = Crew\Unsplash\Photo::find(string $id); $photo->photographer();
Crew\Unsplash\Photo::random($filters)
从指定过滤器中检索随机照片。有关过滤的更多信息,请参阅官方文档。
注意:需要作为参数传递一个数组。
参数
示例
// Or apply some optional filters by passing a key value array of filters $filters = [ 'featured' => true, 'username' => 'andy_brunner', 'query' => 'coffee', ]; Crew\Unsplash\Photo::random($filters);
Crew\Unsplash\Photo::like()
代表用户对照片进行点赞。
注意:您需要首先实例化照片对象。
注意:您需要 like_photos
权限范围。
参数
N/A
示例
$photo = Crew\Unsplash\Photo::find(string $id); $photo->like();
Crew\Unsplash\Photo::unlike()
代表用户取消对照片的点赞。
注意:您需要首先实例化照片对象。
注意:您需要 like_photos
权限范围。
参数
N/A
示例
$photo = Crew\Unsplash\Photo::find(string $id); $photo->unlike();
Crew\Unsplash\Photo::statistics(string $resolution, int $quantity)
检索单个照片的总下载次数、观看次数和点赞次数,以及这些统计数据在特定时间段内的历史分解(默认为 30 天)。
注意:您必须首先实例化 Photo 对象。
参数
示例
$photo = Crew\Unsplash\Photo::find($id); $photo->statistics('days', 7);
Crew\Unsplash\Photo::download()
触发照片的下载。这是遵循'触发下载' API 指南所必需的。
注意:您必须首先实例化 Photo 对象。
参数
示例
$photo = Crew\Unsplash\Photo::find(); $photo->download();
用户
Crew\Unsplash\User::find($username)
检索用户信息。
参数
示例
Crew\Unsplash\User::find($username)
Crew\Unsplash\User::portfolio($username)
检索用户作品集页面链接。
参数
示例
Crew\Unsplash\User::portfolio($username)
Crew\Unsplash\User::current()
检索用户的私人信息。
注意:您需要 read_user 权限范围。
参数
N/A
示例
$user = Crew\Unsplash\User::current();
船员\Unsplash\User::photos($filters)
检索用户的照片。
注意: 首先需要实例化一个用户对象
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, 'order_by' => 'latest', ]; $user = Crew\Unsplash\User::find($username); $user->photos($filters);
船员\Unsplash\User::collections($filters)
检索用户的收藏。
注意: 首先需要实例化一个用户对象 注意: 检索用户私有收藏需要read_collections权限范围
参数
示例
$filters = [ 'page' => 3, 'per_page' => 15, 'order_by' => 'latest', ]; $user = Crew\Unsplash\User::find($username); $user->collections($filters);
船员\Unsplash\User::likes($filters)
检索用户的收藏。
注意: 首先需要实例化一个用户对象
参数
示例
$user = Crew\Unsplash\User::find($username); $user->likes($page, $per_page, $order_by);
船员\Unsplash\User::update([$key => value])
更新当前用户的字段。可以传入数组中的多个字段。
注意: 首先需要实例化一个用户对象
注意: 需要拥有write_user权限范围。
参数
$user = Crew\Unsplash\User::current(); $user->update(['first_name' => 'Elliot', 'last_name' => 'Alderson']);
船员\Unsplash\User::statistics(string $resolution, int $quantity)
检索用户的总下载量、查看次数和点赞数,以及这些统计数据的特定时间段的历史分解(默认为30天)。
注意: 必须首先实例化User对象
参数
示例
$user = Crew\Unsplash\User::find($id); $user->statistics('days', 7);
贡献
欢迎在GitHub上提交错误报告和pull请求,网址为 https://github.com/arcasolutions/unsplash-php。本项目旨在成为一个安全、欢迎的合作空间,贡献者应遵守贡献者公约行为准则。