hansott / pinterest-php
Requires
- kriswallsmith/buzz: v0.15
- netresearch/jsonmapper: ^1.0
Requires (Dev)
- phpunit/phpunit: 4.8.12
- symfony/yaml: 2.7.5
- vlucas/phpdotenv: dev-master
README
安装
通过 Composer
$ composer require hansott/pinterest-php
捐赠
如果你喜欢这个包,请考虑请我喝杯咖啡。感谢你的支持!🙇♂️
使用
身份验证
要使用 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)。有关更多信息,请参阅许可证文件。