hansott/pinterest-php

该包已被废弃,不再维护。作者建议使用 dirkgroenen/pinterest-api-php 包。

官方 Pinterest API 的 PHP 客户端

3.2.7 2020-02-27 20:25 UTC

This package is auto-updated.

Last update: 2020-11-07 10:42:04 UTC


README

Scrutinizer Code Quality Code Coverage Packagist Packagist

安装

通过 Composer

$ composer require hansott/pinterest-php

捐赠

如果你喜欢这个包,请考虑请我喝杯咖啡。感谢你的支持!🙇‍♂️

Buy Me A Coffee

使用

身份验证

要使用 API,你需要从 Pinterest 获取访问令牌。如果你还没有,请 创建一个新的 Pinterest 应用程序。你将获得一个针对该应用的特定客户端 ID 和客户端密钥。

回到你的 PHP 应用程序中,创建一个 Pinterest\Http\ClientInterface 实例(默认为 Pinterest\Http\BuzzClient),并使用它来创建一个 Pinterest\Authentication 实例

$client = new Pinterest\Http\BuzzClient();
$auth = new Pinterest\Authentication($client, $clientId, $clientSecret);

$clientId$clientSecret 变量替换为 你的 Pinterest 应用程序 的数据。

现在,你可以通过重定向用户到通过调用 $auth->getAuthenticationUrl() 获得的 URL 来让用户通过你的应用程序进行身份验证

use Pinterest\App\Scope;

$url = $auth->getAuthenticationUrl(
    'https://your/redirect/url/here',
    array(
        Scope::READ_PUBLIC,
        Scope::WRITE_PUBLIC,
        Scope::READ_RELATIONSHIPS,
        Scope::WRITE_RELATIONSHIPS,
    ),
    'random-string'
);

header('Location: ' . $url);
exit;
  • 重定向 URL 是 Pinterest 将发送用户注册应用程序的认证代码到我们的页面的 URL。此 URL 需要通过 https 访问,并且需要填写到你的 Pinterest 应用程序表单中(在 Pinterest 后端)。
  • 第二个参数是你应用在用户账户上需要的权限数组。这里至少需要有一个。
  • 验证状态是你为注册用户生成的一个随机代码,并持久化(例如在 SESSION 中)。Pinterest 将将其发送回我们以便进一步参考。

当你的应用程序用户同意通过 API 让你的应用程序控制他们的 Pinterest 账户时,Pinterest 将将他们重定向到提供的重定向 URL,并添加一些额外的 GET 参数。其中最重要的参数是 "code",我们将用它来交换 OAuth 访问令牌。他们还将通过 GET 参数发送验证状态回我们,这样我们就可以检查我们是否期望此调用。

此过程最后一步是用该代码交换访问令牌

$code = $_GET['code'];
$token = $auth->requestAccessToken($code);

现在你应该安全地持久化该令牌。从现在起,你可以使用它从你的应用程序连接到 Pinterest API,代表用户。

初始化 Pinterest\Api

$auth = Pinterest\Authentication::onlyAccessToken($client, $token);
$api = new Pinterest\Api($auth);

使用 $api 中的 Pinterest\Api 实例,你现在可以代表用户向 Pinterest 的 API 发送经过身份验证的 API 请求。

获取经过身份验证的用户

$response = $api->getCurrentUser();

if (!$response->ok()) {
    die($response->getError());
}

$user = $response->result(); // $user instanceof Objects\User

获取用户

// Get user by username
$response = $api->getUser('otthans');

// Get user by user id
$response = $api->getUser('314196648911734959');

if (!$response->ok()) {
    die($response->getError());
}

$user = $response->result(); // $user instanceof Objects\User

获取一个看板

$response = $api->getBoard('314196580192594085');

if (!$response->ok()) {
    die($response->getError());
}

$board = $response->result(); // $board instanceof Objects\Board

更新一个看板

// First, get the board using getBoard()
$response = $api->getBoard('314196580192594085');

if (!$response->ok()) {
    die($response->getError());
}

$board = $response->result(); // $board instanceof Objects\Board

// Or create a new board without getBoard()

$board = new Board;
$board->id = 'the-board-id';

// Then, update the fields you want to change

$board->name = 'New board name';
$board->description = 'New board description';
$response = $api->updateBoard($board);

if (!$response->ok()) {
    die($response->getError());
}

$updatedBoard = $response->result(); // $updatedBoard instanceof Objects\Board

获取认证用户的看板列表

$response = $api->getUserBoards();

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $pagedList instanceof Objects\PagedList
$boards = $pagedList->items(); // array of Objects\Board objects

获取认证用户的推文列表

$response = $api->getUserPins();

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $pagedList instanceof Objects\PagedList
$pins = $pagedList->items(); // array of Objects\Pin objects

获取一个看板的推文列表

$response = $api->getBoardPins($boardId);

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $pagedList instanceof Objects\PagedList
$pins = $pagedList->items(); // array of Objects\Pin objects

请参阅获取分页列表的下一项

获取认证用户的关注者列表

$response = $api->getUserFollowers();

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $boards instanceof Objects\PagedList
$users = $pagedList->items(); // array of Objects\User objects

请参阅获取分页列表的下一项

获取认证用户关注的看板列表

$response = $api->getUserFollowingBoards();

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $boards instanceof Objects\PagedList
$boards = $pagedList->items(); // array of Objects\Board objects

请参阅获取分页列表的下一项

获取认证用户关注的用户列表

$response = $api->getUserFollowing();

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $boards instanceof Objects\PagedList
$users = $pagedList->items(); // array of Objects\User objects

请参阅获取分页列表的下一项

获取认证用户关注的兴趣列表

示例: 现代建筑

$response = $api->getUserInterests();

if (!$response->ok()) {
    die($response->getError());
}

$pagedList = $response->result(); // $boards instanceof Objects\PagedList
$boards = $pagedList->items(); // array of Objects\Board objects

请参阅获取分页列表的下一项

关注一个用户

$response = $api->followUser('otthans');

if (!$response->ok()) {
    die($response->getError());
}

取消关注一个用户

$response = $api->unfollowUser('otthans'); // username or user ID

if (!$response->ok()) {
    die($response->getError());
}

关注一个看板

$response = $api->followBoard('teslamotors', 'model-x');

if (!$response->ok()) {
    die($response->getError());
}

取消关注一个看板

$response = $api->unfollowBoard('teslamotors', 'model-x');

if (!$response->ok()) {
    die($response->getError());
}

创建一个看板

$name = 'My new board';
$optionalDescription = 'The description of the board';
$response = $api->createBoard($name, $optionalDescription);

if (!$response->ok()) {
    die($response->getError());
}

$board = $response->result(); // $board instanceof Objects\Board

删除一个看板

$boardId = '314196580192594085';
$response = $api->createBoard($boardId);

if (!$response->ok()) {
    die($response->getError());
}

创建一个推文

$board = '<username>/<board_name>'; 
$note = 'This is an amazing pin!';
$optionalLink = 'http://hansott.github.io/';

// Load an image from a url.
$image = Pinterest\Image::url('http://lorempixel.com/g/400/200/cats/');

// Load an image from a file.
$pathToFile = 'myfolder/myimage.png';
$image = Pinterest\Image::file($pathToFile);

// Load a base64 encoded image.
$pathToFile = 'myfolder/myimage.png';
$data = file_get_contents($pathToFile);
$base64 = base64_encode($data);
$image = Pinterest\Image::base64($base64);
 
$response = $api->createPin($board, $note, $image, $optionalLink);

if (!$response->ok()) {
    die($response->getError());
}

$pin = $response->result(); // $pin instanceof Objects\Pin

获取一个推文

$pinId = 'the-pin-id';
$response = $api->getPin($pinId);

if (!$response->ok()) {
    die($response->getError());
}

$pin = $response->result(); // $pin instanceof Objects\Pin

更新一个推文

// First, get the pin using getPin()

$pinId = 'the-pin-id';
$response = $api->getPin($pinId);

if (!$response->ok()) {
    die($response->getError());
}

$pin = $response->result();

// Or create a new Pin without getPin()

$pin = new Pin;
$pin->id = 'the-pin-id';

// Then, update the fields you want to change

// Update note
$pin->note = 'a new note';

// Update link
$pin->link = 'https://google.com';

$response = $api->updatePin($pin);

if (!$response->ok()) {
    die($response->getError());
}

$updatedPin = $response->result();

删除一个推文

$pinId = 'the-pin-id';
$response = $api->deletePin($pinId);

if (!$response->ok()) {
    die($response->getError());
}

获取分页列表的下一项

$hasMoreItems = $pagedList->hasNext();

if (!$hasMoreItems) {
    return;
}

$response = $api->getNextItems($pagedList);

if (!$response->ok()) {
    die($response->getError());
}

$nextPagedList = $response->result();

贡献

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

安全

如果您发现任何安全相关的问题,请通过电子邮件hansott at hotmail be联系,而不是使用问题跟踪器。

致谢

许可证

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