arcasolutions/unsplash

Arca Solutions 提供的访问 Unsplash API 和照片库的包装器

2.4.4 2019-01-16 17:58 UTC

README

Build Status

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::collectionsSearch::photosSearch::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。本项目旨在成为一个安全、欢迎的合作空间,贡献者应遵守贡献者公约行为准则。